2012年5月15日火曜日

JMeterによるリモート実行

負荷テストをするのに1台のPCで負荷テスト対象サーバーにアクセスできるスレッド数は実用的なという意味で、限られていると思う。複数のPCを用意し、それらから負荷をかける。
負荷をかけるPC上のJMeterをJMeterサーバーと読んでいる。そのJMeterサーバーに指示をするPC上のJMeterをJMeterクライアントと呼ぶ。
例えば、3台のJMeterサーバーを用意し、そのサーバーが、一斉に負荷テスト対象サーバーに対し負荷をかける。
負荷テスト対象サーバー←負荷←JMeterサーバー←指示←JMeterクライアント
とまあ、こんな具合。
まずは、JMeterクライアント側。

  • テスト計画を作成する。テスト計画のファイル(jmx)はJMeterクライアントにあればよい。
  • JMETER_HOME\bin\jmeter.propertiesのremote_hostsにJMeterサーバーのIPアドレスを設定する。複数設定する場合には、それらをカンマで区切る。
  • 1099ポートを開ける。(クライアント側もポートを開けないとうまくいかなかった。)

次にJMeterサーバー側

  • 環境変数を登録する
    • JAVA_HOME=C:\Program Files\Java\jdk1.6.0_32
    • JMETER_HOME=C:\Program Files\Apache Software Foudation\jmeter-2.6
    • PATHに%JAVA_HOME%\binを追加。
    • CLASSPATH=%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar
  • 1099ポートを開ける。
設定は以上。
あとは、JMeterサーバー側で%JMETER_HOME%\bin\jmeter-server.batを実行する。
すると、ApacheJMeter_core.jarを見つけてくれる。

... Trying JMETER_HOME=..
Found ApacheJMeter_core.jar
Created remote object: UnicastServerRef [liveRef: [endpoint:[10.10.0.140:1716](l
ocal),objID:[3a67570:1374fd02d87:-7fff, -2422396333061462534]]]

これで準備はOK。あとは、クライアントからの指示を待つばかり。
JMeterクライアントで、テスト計画ファイルを読み込み、実行→すべて開始(リモート)を実行すると、JMeterサーバーが負荷テスト対象サーバーにテスト計画に指定した負荷をかけてくれる。

Starting the test on host 127.0.0.1 @ Tue May 15 18:25:10 JST 2012 (1337073910091)
Finished the test on host 127.0.0.1 @ Tue May 15 18:25:20 JST 2012 (1337073920763)
ハマったところは、クライアント側も1099ポートを開けておかなくちゃいけないこと。

0 件のコメント:

コメントを投稿