JMeterの導入+実行
テスト計画はローカルのMacでGUI上で作成を行い、実際に負荷をかけることはAmazon Linux AMI上からCLIで実行する手順となります。
実際に負荷をかけることはGUIからの実行は結果が不正確になることもあり非推奨なのでCLIで実行することを公式から推奨しています。
http://jmeter.apache.org/usermanual/get-started.html
Don't run load test using GUI mode !
JMeterのインストール
Mac
インストール後、起動
$ brew install jmeter
$ jmeter
Amazon Linux AMI
最新が5.1.1のものであることを確認
http://ftp.meisei-u.ac.jp/mirror/apache/dist/jmeter/binaries/
$ wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/jmeter/binaries/apache-jmeter-5.1.1.zip
$ unzip apache-jmeter-5.1.1.zip
$ sudo mkdir /usr/local/jmeter
$ sudo mv apache-jmeter-5.1.1 /usr/local/jmeter/
$ cd /usr/local/jmeter/apache-jmeter-5.1.1/bin/
jmeterファイルを編集
$ vim jmeter
159行目の以下の箇所をコメントアウト
## : "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
Java 8のインストール
$ tar xvf jdk-8u221-linux-x64.tar.gz
$ sudo mv jdk1.8.0_221/ /usr/local/src/
$ export PATH=/usr/local/src/jdk1.8.0_221/bin/:$PATH
$ export JAVA_HOME=/usr/local/src/jdk1.8.0_221
更新できたことを確認
$ java -Xmx16M -version
java version "1.8.0_221"
動作確認
テスト計画作成
GUIで以下の内容でテスト計画作成
Thread Groupでリクエスト元のユーザーを想定した設定を行います。
- Thread Group
Number of Threads (users): 1000
Ramp-Up Period (in seconds): 3600
Loop Count: Forever
Thread GroupからSamplerでHTTP Requestの設定を行い、リクエスト内容の設定を行います。
- HTTP Request
Protocol: https
Server Name or IP: alb.test.hayashier.com
結果確認のためListenerで例えば以下を追加します。
- View Results Tree
- View Results in Table
- Graph Results
負荷試験を実行
作成したテスト計画となるjmxファイルをJMeterを実行するホストへ配置。
以下のコマンドで実行。
$ ./jmeter -n -t ~/test.jmx -l log.jtl
GUI上で、結果を確認するためにはListerで"Graph Results"や"View Results Tree","View Results in Table"など確認結果の形式を追加して、Filenameでログ出力したjtlの形式のファイルの読込を行って確認することができます。
エラー
Unrecognized VM option 'MaxMetaspaceSize=256m'
jmeterファイルの159行目の以下の箇所をコメントアウト
## : "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/jmeter/NewDriver : Unsupported major.minor version 52.0
$ java -version
java version "1.7.0_211"
Java 8にアップデート
Error occurred during initialization of VM
64bit環境に対して32bitでインストールしていた
$ sudo java -d64 -version
Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.
https://qiita.com/sykx_16g/items/16f1712580c2e7c81080
Error occurred during initialization of VM; Could not reserve enough space for object heap
$ tar xvf jdk-8u221-linux-x64.tar.gz
$ sudo mv jdk1.8.0_221/ /usr/local/src/
$ export PATH=/usr/local/src/jdk1.8.0_221/bin/:$PATH
更新できたことを確認
$ java -Xmx16M -version
java version "1.8.0_221"
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/jmeter/NewDriver : Unsupported major.minor version 52.0
以下の設定で解消
$ export JAVA_HOME=/usr/local/src/jdk1.8.0_221
調査過程
jmeterファイルの最終行の192行目で以下のようにJAVA_HOMEの環境変数を読み込んでおり、こちらのパスはJava 7のものだった
"$JAVA_HOME/bin/java" $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"
参考
- Apache JMeter™
https://jmeter.apache.org/ - Apache JMeter の基本的な使い方に関して(その1)
https://marunouchi-tech.i-studio.co.jp/4529/ - 明日楽するために使えるようになりたい。JMeterの基本的な使い方。
https://devlog.arksystems.co.jp/2019/01/23/6596/ - JMeterのシナリオ作成がうまくいかない!そんなときのトラブルシューティングガイド
http://tech-blog.rakus.co.jp/entry/20181030/jmeter/troubleshooting - JMeter
https://www.techscore.com/tech/Java/ApacheJakarta/JMeter/index/