5
2

More than 3 years have passed since last update.

JMeter の Master/Slave 構成のコンフィグレーションと実行

Posted at

JMeterのコンフィグレーションファイルである、jmeter.properties を変更する必要がある。特に Distributed Testing を実現するためには、SlaveのIPアドレスをMaster側に渡すremote_hostsというプロパティの変更は必須だ。どれがベストプラクティスなのかよくわからなかったので、調べてみた。

コンフィグレーションの上書き

jmeter.properties を上書きする

JMETER_HOME/binjmeter.properties が存在し、それがデフォルトで参照されるので、これを変更するのはどうだろうか?公式のConfiguring JMeterによるとお勧めしないらしい。もしやりたい場合は、JMETER_HOME/bin/user.properties を編集するか、もしくは、自分用にjmeter.properties を作成して、JMeterの実行時に指定することがお勧めらしい。その場合は次のオプションを使う。

-p, --propfile <argument>
  the jmeter property file to use

コマンドラインパラメータで上書きする

他の方法では、コマンドラインパラメータで上書きする方法がある。1.4.6 Overriding Properties Via The Command Line によると、いくつかのオーバーライドのオプションがある。-Jオプションを使えば良さげ。また、Masterだけでなく、Slaveにも設定を転送したい場合は、-G を使えば良さげ。

Java system properties and JMeter properties can be overridden directly on the command lin (instead of modifying jmeter.properties). To do so, use the following options:

-D[prop_name]=[value]
defines a java system property value.
-J[prop_name]=[value]
defines a local JMeter property.
-G[prop_name]=[value]
defines a JMeter property to be sent to all remote servers.
-G[propertyfile]
defines a file containing JMeter properties to be sent to all remote servers.
-L[category]=[priority]
overrides a logging setting, setting a particular category to the given priority level.
The -L flag can also be used without the category name to set the root logging level.

Examples:

jmeter -Duser.dir=/home/mstover/jmeter_stuff \
    -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
jmeter -LDEBUG

JMeter 実行で使うオプション

今回のプロジェクトで必要になってくるオプションを整理してみたい。

  • -n: ヘッドレスモード
  • -t: jmxファイルのパス
  • -l: ログのパス
  • -e: レポートの出力
  • -o: レポート出力のパス
  • -J: jmeter.propertiesの上書き
  • -r: リモートサーバをスタートする (remote_hosts で定義されたもの)
  • -R <argument>: リモートサーバをスタートする。argument で remote_hosts を上書きする
  • -X: リモートサーバーをテスト実行後終了させる

Distributed Testing を実行する

次のオプションを使ってテストを起動してみた。要件は下記の通り

  • ヘッドレスモードにしたい
  • jmx ファイルを指定したい
  • レポートを出力したい
  • リモートサーバーを指定して実行したい
  • ログファイルを出力したい
  • リモートサーバーは実行後終了はしてほしくない

Slave でnohup jmeter-server & を実行後に、Master で次のコマンドを実行する。

$ jmeter -n -t ./DocumentApi.jmx -l exec.log -e -o report -R 10.0.0.5

これで無事上記の要件が実現する。ちなみに、この例だと Slave は1台だが、複数ある場合は、10.0.0.5,10.0.0.6 みたいにすると良い。

csv ファイルの転送

衝撃的なことだが、jmxファイル内でつかわれる、cvsファイルは、Slave 側のサーバーに自動で転送されない。つまり、csvファイルを使っている場合は、Slave のパスが通っているディレクトリに csvファイルを転送してから、テストを実行しなくてはいけない。実際に私の環境でも、これがないためにテストが失敗していた。現在は最新5.2を使っている。
* Issue with Reading CSV file when doing Distributed testing in Jmeter

 まとめ

このセッティングで、無事 Distributed Testing を実行することができた。尚、この他にもJVMのチューニングなどを行う必要がありそう(ヒープの設定など)それはまた別のブログで。

5
2
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
5
2