JMeterで負荷テストした時のメモ

概要

Apache JMeterを使って、HTTPSのチャット書き込みの負荷テストをした時のメモ。

参考URL

JmeterでHTTPSをMITM Proxyとして使い暗号通信内容をぶっこ抜く - Qiita
HTTPSの通信をJMeterのProxyを使って、通信を記録して再生する手順。

SpotInstanceとJMeterを使って400万req/minの負荷試験を行う | Developers.IO
JMeterAWS EC2上の複数Linuxから分散して負荷アクセスをする手順。

JMeterHTTPS通信を記録(レコーディング)

Windows7でやった。

JMeter設置

apache-jmeter 2.13 をダウンロードしてきて、
C:\jmeter の下に配置。

C:\jmeter\apache-jmeter-2.13\bin\ApacheJMeter.jar
をクリックするとJMeterが起動する。

JMeterの設定ファイル作成(.jmx)

テスト計画
 スレッドグループ ←作成
  記録コントローラー ←作成
  統計レポート ←作成
ワークベンチ
 HTTPプロキシサーバー ←作成

HTTPプロキシサーバーの、 「対象となるコントローラー」で「記録コントローラー」を指定

Firefox(などブラウザ)のプロキシ設定をする。
localhost 8080


Firefoxの設定で、
認証局証明書

C:\jmeter\apache-jmeter-2.13\bin\ApacheJMeterTemporaryRootCA.crt
をインポート。

HTTPプロキシサーバー画面にある、
開始
ボタンで通信の記録を開始。

左メニューのツリーにある、記録コントローラーの下に通信記録のデータができるので、
必要な通信を残して要らないHTTPリクエストを消す。

※今回、実行した負荷テストは、通信方法がFlash Remotingだったので、
POSTの内容が、binディレクトリに
POST2249813149613323929.binary
というような名前で作成されていた。
複数サーバーで分散してJMeterを動かす時にこのファイルが各サーバーにないと、負荷テストの通信がエラーになる。

分散負荷テスト用のJMeter設定

EC2上のAmazon Linuxを3〜4台立ち上げて実施した(はず)。

EC2の立ち上げ

以前のメモと同じようにVPCを作成。
AWSのVPCを使ってWeb + DB サーバーの2台構成にするためのメモ - kubotti’s memo

その後、Management ConsoleからAmazon Linuxインスタンスを適当な数(3台とか5台とか)立ち上げ。

VPCセキュリティグループの設定

ポートを開ける。

1099番ポートはJMeterの待ち受け用
30000-60000番はRMI通信用
らしい。

1099番と
30000-60000番のポートは、

送信元に自分自身のセキュリティグループIDを入れればいいっぽい。
ssh通信のために22番ポートも開ける。

VPCを設定する時、新しくセキュリティグループを作っても、
デフォルトのセキュリティグループも適用される。
その場合は、デフォルトのセキュリティグループでもポートを開ける設定をしないといけない。

各サーバーにJMeterを設置

wget http://ftp.kddilabs.jp/infosystems/apache//jmeter/binaries/apache-jmeter-2.13.tgz
tar xzf apache-jmeter-2.13.tgz

JMeter slaveサーバーの起動

VPC内のローカルIPを指定して、JMeterを起動。(自分のローカルIPを指定する)

/home/ec2-user/apache-jmeter-2.13/bin/jmeter-server -Djava.rmi.server.hostname=172.20.4.46 &

/home/ec2-user/apache-jmeter-2.13/bin/jmeter-server -Djava.rmi.server.hostname=172.20.4.47 &

JMeter masterサーバーの設定

vi /home/ec2-user/apache-jmeter-2.13/bin/jmeter.properties

remote_hosts=172.20.4.46:1099, 172.20.4.47:1099

.jmxファイルのアップロード。
loadtest_sample1.jmxなど。

分散負荷テスト実施

/home/ec2-user/apache-jmeter-2.13/bin/jmeter -n -t loadtest_sample1.jmx -r