LoginSignup
3
5

More than 5 years have passed since last update.

JMeterによるMoodleの負荷試験(テストプランの作り方)

Last updated at Posted at 2018-03-14

Moodleサーバの負荷試験

JMeterを使用すると、サーバに対して負荷試験が出来る。Moodleにはテストプランを作る機能があるのでこれを使ってテストを行う。

注意

本番稼働中のMoodleサーバや、他人のMoodleサーバには絶対に実行しないでください

ダウンロードと起動

zipファイルを解凍後、中に入っているbin/jmeter.bat をダブルクリックで実行する。

2018-02-13_1110.png (64.7 kB)

Moodle上での準備

Moodle上で、JMeterのテストプランを作成出来るが、前提条件がいくつかあり、全てクリアしないといけない。

テスト用コースとモジュールの作成

テスト用のコースを作成し、次のモジュールをコース上に追加する。

  • ページ
  • フォーラム(返信がついたディスカッションが存在する状態であること)

!!ハマりポイント!!

フォーラムを作成する際、コースに既に「アナウンスメント」フォーラムモジュールがある場合は、これを削除するか、これをそのまま使うこと。テストプランを作る際、コース上の「最初のフォーラム」しか見てくれないため。(追加でフォーラムを作っても無視される)

\moodle\admin\tool\generator\classes\testplan_backend.php
        // 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でアップロードするテスト用アカウントのパスワードを指定する。

config.php
$CFG->tool_generator_users_password = "moodle";

諸々用意をすると、テストプランをダウンロードすることが出来る。

2018-02-13_1554.png (127.3 kB)

ここで、テストプランユーザーファイルをダウンロードする。

ファイル 意味
テストプラン 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から判定する。

2018-02-14_1056.png (101.2 kB)

Warm-up site・Moodle Test

Default site request

左ペインの Test Plan -> Warm-up site および Moodle Test -> Default site requestBasicタブにある 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をクリックする。

2018-02-14_1059.png (26.3 kB)

Listnerの追加

Listnerを追加することで、結果を表・グラフ表示出来るようにする。

左ペインのTest Planを右クリックし、Add -> Listener から、次のリスナーを追加する。

追加するリスナー
Graph Results
View Results in Table
Response Time Graph

2018-02-14_1242.png (69.2 kB)

JMeterの実行

Moodleにユーザーを追加し、コースの準備が整ったらテストを実行する。
テスト実行時には、htopなどでサーバの状態を確認出来るようにしておく。

上部メニューの実行ボタンをクリックして実行する。

2018-02-14_1105.png (24.6 kB)

実行結果

追加したListnerに結果が表示される。また、実行中にhtopで常に負荷状況をモニタリングすると状況を把握できる。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5