Moodleサーバの負荷試験
JMeterを使用すると、サーバに対して負荷試験が出来る。Moodleにはテストプランを作る機能があるのでこれを使ってテストを行う。
注意
本番稼働中のMoodleサーバや、他人のMoodleサーバには__絶対に実行しないでください__。
ダウンロードと起動
zipファイルを解凍後、中に入っているbin/jmeter.bat をダブルクリックで実行する。
Moodle上での準備
Moodle上で、JMeterのテストプランを作成出来るが、前提条件がいくつかあり、全てクリアしないといけない。
テスト用コースとモジュールの作成
テスト用のコースを作成し、次のモジュールをコース上に追加する。
- ページ
- フォーラム(返信がついたディスカッションが存在する状態であること)
!!ハマりポイント!!
フォーラムを作成する際、コースに既に「アナウンスメント」フォーラムモジュールがある場合は、これを削除するか、これをそのまま使うこと。テストプランを作る際、コース上の「最初のフォーラム」しか見てくれないため。(追加でフォーラムを作っても無視される)
// Getting the first forum module instance and it's first discussion and reply as well.
if (!$forums = $courseinfo->get_instances_of('forum')) {
print_error('error_noforuminstances', 'tool_generator');
}
// ここがダメ!!
$forum = reset($forums);
// Getting the first discussion (and reply).
if (!$discussions = forum_get_discussions($forum, 'd.timemodified ASC', false, -1, 1)) {
print_error('error_noforumdiscussions', 'tool_generator');
}
テスト用ユーザー作成
パスワードをmoodleにリセットした十分な数の登録済みユーザ (ユーザー数は、テストプランで要求される数だけ作成する)
登録件数が非常に多いため、CSVのcourse1カラムで負荷試験用のコース(shortname)を指定することでCSV登録時に一緒にコース登録も行う。
config.phpへの追記
config.phpに次を追記する。ここで設定するパスワードは、事前にCSVでアップロードするテスト用アカウントのパスワードを指定する。
$CFG->tool_generator_users_password = "moodle";
諸々用意をすると、テストプランをダウンロードすることが出来る。
ここで、テストプランとユーザーファイルをダウンロードする。
| ファイル | 意味 |
|---|---|
| テストプラン | JMeterに読み込ませるプランファイル。どのように画面遷移を繰り返していくか等が定義されている。 |
| ユーザーファイル | JMeterに読み込ませるユーザー一覧のファイル。テストで使用するユーザー名とパスワードが保存されている。 |
JMeterのセットアップ
JMeterを起動し、File -> Open でテストプランをロードする。
次に、以下の設定を変更する。
Test Plan
左ペインの Test Plan の設定を次の通りにする。既に設定済みになっているが、forumまわりの値は怪しいというか間違っているので自分で修正する。
| 設定項目 | 設定値 | IDの見分け方 |
|---|---|---|
| courseid | 負荷試験用コースID(テストプラン作成時に指定したコース) | https://example.com/course/view.php?id=2 |
| pageactivityid | 負荷試験用コースに作成した「ページ」のID | https://example.com/mod/page/view.php?id=3 |
| forumactivityid | 負荷試験用コースに作成した「フォーラム」のID | https://example.com/mod/forum/view.php?id=2 |
| forumdiscussionid | 「フォーラム」内のディスカッションID | https://example.com/mod/forum/discuss.php?d=2 |
| forumreplyid | 「フォーラム」内のディスカッションに紐付く返信のID | https://example.com/mod/forum/post.php?reply=5#mformforum |
※IDはURLから判定する。
Warm-up site・Moodle Test
Default site request
左ペインの Test Plan -> Warm-up site および Moodle Test -> Default site request の Basicタブにある Web Server の設定を次の通りにする。
| 設定項目 | 設定値 |
|---|---|
| Protocol | https |
| Port Number | 443 |
CSV users data
左ペインの Test Plan -> Warm-up site および Moodle Test -> CSV user dataの設定を次の通りにする。
| 設定項目 | 設定値 |
|---|---|
| Filename | ユーザーファイル(CSV)を指定する |
Create php array results(無効)
左ペインの Test Plan -> Moodle Test -> Create php array resultsを__無効__にする。
Create php array resultsを右クリックし、Disableをクリックする。
Listnerの追加
Listnerを追加することで、結果を表・グラフ表示出来るようにする。
左ペインのTest Planを右クリックし、Add -> Listener から、次のリスナーを追加する。
| 追加するリスナー |
|---|
| Graph Results |
| View Results in Table |
| Response Time Graph |
JMeterの実行
Moodleにユーザーを追加し、コースの準備が整ったらテストを実行する。
テスト実行時には、htopなどでサーバの状態を確認出来るようにしておく。
上部メニューの実行ボタンをクリックして実行する。
実行結果
追加したListnerに結果が表示される。また、実行中にhtopで常に負荷状況をモニタリングすると状況を把握できる。