この記事では、AWS ec2のWindows Server 2016に、JMeter3.2の環境構築をしました。また、CentOS7と組み合わせた分散環境を構築します。Windows側をマスターに、CentOS側をスレーブにします。リモートデストクップクライアントは、Microsoft Remote Desktop for Mac Beta version 8.2.31を利用しています。
1. Windows単独環境でのJMeter構築
単独環境での構築については、「AWS Windows Server 2016でのJMeter環境構築」を参考にしてください。
2. CentOSでのJMeter構築
ec2でのCentOS7の初期セットアップについては省略します。
必要なコンポーネントを追加します。
$ sudo yum update -y
$ sudo yum install wget -y
$ sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
$ sudo wget http://archive.apache.org/dist/jmeter/binaries/apache-jmeter-3.2.tgz -P /opt/
ダウンロードしたJMeter3.2をインストールします。
$ sudo tar zxvf /opt/apache-jmeter-3.2.tgz -C /opt/
自動起動を設定します。IPアドレスは環境に合わせて指定してください。
$ sudo vi /etc/rc.local
ファイル末尾に
/opt/apache-jmeter-3.2/bin/jmeter-server -Djava.rmi.server.hostname=172.31.27.62 &
を追加します。
$ sudo chmod +x /etc/rc.local
同時接続数を大きくしてもよいように、ファイルディスクリプタの最大数を拡張します。
$ sudo vi /usr/lib/systemd/system/rc-local.service
ファイル内の [Service] の配下に
LimitNOFILE=64000
を追加します。
再起動して動作確認します。
$ ps -ax | grep jmeter
760 ? S 0:00 /bin/sh /opt/apache-jmeter-3.2/bin/jmeter-server -Djava.rmi.server.hostname=172.31.27.62
767 ? S 0:00 /bin/sh /opt/apache-jmeter-3.2/bin/jmeter -Dserver_port=1099 -s -j jmeter-server.log -Djava.rmi.server.hostname=172.31.27.62
905 ? Sl 0:01 java -server -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20 -Djava.security.egd=file:/dev/urandom -jar /opt/apache-jmeter-3.2/bin/ApacheJMeter.jar -Dserver_port=1099 -s -j jmeter-server.log -Djava.rmi.server.hostname=172.31.27.62
9107 pts/0 R+ 0:00 grep --color=auto jmeter
$ cat /proc/`pgrep java | head -1`/limits | grep 'open files'
Max open files 64000 64000 files
同様の環境を計4セット構築します。
3. マスター設定
Windwosファイアウォールをオフにします。これをしないと、スレーブとうまく通信できません。
Windows側のJMeterのインストールフォルダ配下binにある、jmeter.propertiesを設定します。IPアドレスは環境に合わせてください。
remote_hosts=172.31.27.62,172.31.26.37,172.31.20.153,172.31.28.111
4. Jmeterの実行
JMeterを起動して、「AWS Windows Server 2016でのJMeter環境構築」で作成したテストシナリオを呼び出します。
今度は、右上の緑矢印が2つ書かれているボタンをクリックします。
すると、4台分に相当する、約4000リクエスト/秒の性能が測定されていることがわかります。