パフォーマンステスト1の記事の続きです。JMeterの使い方や基本的な設定の仕方は、ネットに溢れているため割愛します。
今回は
「JMeterサーバーをEC2のバッチサーバー上で動かし、EC2のウェブサーバーに接続した設定(リモート接続)」
の仕組みについて書きたいと思います。
Windows⇒Linuxで
いざ、ローカル環境のJMeterで負荷をかけられるようになっても、本番環境でテストできるようにするためにはJMeterのサーバーをウェブサーバーと接続しなければなりません。これをリモート接続といいます。よく説明にあるのは、ローカルから直接ウェブサーバーへ、、という設定なのですが、実際行うとセキュリティ面からも弊害が多いようです。
そのため、より負荷を減らして、簡単に行うため、ローカル環境をlinuxに移し全く動かしていないEC2のバッチサーバー上でJMeterを起動させるということになりました。
その為にはJMeterライブラリ内のファイル書き換えが必須ですが、ローカル環境に落としたJMeterで設定しても意味を成しません。環境を整える必要があります。そのため、ローカルのJMeterは今後一切使わない、、位のイメージでいると良いと思います。
画像の解説:見にくくて申し訳ありません。
linux環境上にjmeterをインストールします。このlinuxがWindows環境でjmeterを動かすのと同じローカルだとします。 windowsローカルで作ったJMeter実行ファイルや設定ファイルなどを全てコピペで移動します(WinSCPでサクッと出来ます) JMeterサーバーを2台使ったので、JMeterを使うバッチサーバー上にもインストールorコピペします ローカルのJMeterはバッチサーバーへ接続し(緑線)、バッチサーバー上のJMeterがウェブサーバーに接続し(虹色線)、処理が終わってレスポンスが返ってきたら(水色線)バッチサーバーからローカルのJMeterに返ってくる(水色線)という流れです。このバッチサーバーへ接続する部分がJMeterで設定するRMIサーバーのようです(確信は無いです。)
接続のカギmasterとslave
接続方法についてもたくさんの解説と記事があるのですが、自分の状態でどちらの設定をどうするかこんがらがってしまいました。
masterは、実際にJMeterを動かす方なので、linux上のローカルです
slaveは、バッチ上で動かす2台のJMeterです
master側のjmeter.propertiesの設定をします。ここで指定するIPアドレスはJMeterサーバー2台のことです。
slave側ではjmeter-serverの設定をします。勿論、2台あればそれぞれのjmeter-serverファイルを書き換える必要があります。IPアドレスは、最後に戻るべき所を指定しましょう。ここでは、Linuxローカルの方です
そして、リモート(SLAVE)のサーバーを起動します。apache-jmeter5.0/bin内に入り、./jmeter-serverとコマンドを打つと、create remoteと出たら、JMeterサーバーが起動した印。endpointがrmi.serverで最後に返すサーバーになっているかの確認が必要。
JMeterサーバーが起動したら、MASTER側でapache-jmeter5.0/bin内に入り、○○.jmxのテスト実行ファイルをコマンドで打つ。
@bin$ ./jmeter -n -t ファイル名.jmx -l ログファイル名.jtl -r <<<-rはremoteを意味しています。必須
また、もう一つの注意点として、.jmxの実行ファイルはMASTER側のbin内に格納しておくが、csvデータはSLAVE側に格納しないと読み込まれない。データはbin内でなくても良いがjmxのファイルでパスを指定しているはず。
テストが終了したら、
./jmeter -g ログファイル名.jtl -o log <<<最後のlogは格納するフォルダ名なので、bin内にlogフォルダを作っておく必要があります
でhtml形式のレポートファイルが作られるのでとっても便利です!
<注意点>
・jtlファイルはbin内に格納してあること。