JMeterによる負荷テストは「GUI」「CUI」どちらでも実施が可能です。しかしながら、負荷テスト実行は「CUI」にて行うことが推奨されています。理由は、負荷をかけていくとJMeter側のスペックがボトルネックとなりやすいためです。
この記事では、CentOS7環境へJMeterをインストールする方法と、実行コマンドについて解説していきます。なお、Windows環境から実行したい場合は、プロンプトから同様のコマンドの実行が可能です。
- JMeterのインストール
- 実行コマンド
JMeterのインストール
CentOS7環境に、JMeterのインストールを行います。インストールとともに、負荷テストに必要となる設定変更を行っていきます。
javaのインストール
まずはjavaのインストールを行います。
# yum install -y java
# java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
JMeterのインストール
次にJMeterのインストールを行います。
Windowsへのインストールと同様に、公式サイトからtgzファイルをダウンロードし解凍します。また、/usr/local/jmeterへシンボリックリンクをはっておきます。
# cd /usr/local/src/
# wget https://ftp.kddi-research.jp/infosystems/apache//jmeter/binaries/apache-jmeter-5.3.tgz
# tar xvf apache-jmeter-5.3.tgz
# ln -s /usr/local/src/apache-jmeter-5.3/ /usr/local/jmeter
メモリチューニング
JMeterのメモリ割り当てのチューニングを行っておきましょう。設定は環境に応じて決めてもらえればよいと思いますが、JMeter単独環境の場合は、実メモリの70%くらい割り当ててしまっても問題ないと思います。
下の例では、2GBのメモリ割り当てに変更しています。
sed -i_`date +%Y%m%d` -e 's/: "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"/: "${HEAP:="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=256m"}"/g' /usr/local/jmeter/bin/jmeter
# diff /usr/local/jmeter/bin/jmeter{,_`date +%Y%m%d`}
166c166
< : "${HEAP:="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=256m"}"
---
> : "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
RMI設定の変更
JMeterを1台で利用するときは不要ですが、マスタスレーブ構成にする場合に、SSL通信を無効化する設定を入れておきます。
sed -i_`date +%Y%m%d` -e s/#server.rmi.ssl.disable=false/server.rmi.ssl.disable=true/g /usr/local/jmeter/bin/jmeter.properties
# diff /usr/local/jmeter/bin/jmeter.properties{,_`date +%Y%m%d`}
336c336
< server.rmi.ssl.disable=true
---
> #server.rmi.ssl.disable=false
動作確認
動作確認をしてみましょう。次のように表示されればインストール完了です。
# /usr/local/jmeter/bin/jmeter -v
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Jun 26, 2020 5:01:35 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ | _ / / ___| | | | ____| | | / | ____|_ _| ____| _
/ _ | |_) / _ | | | |_| | _| _ | | |/| | _| | | | _| | |_) |
/ ___ | __/ ___ |___| _ | |___ | |_| | | | | |___ | | | |___| _ <
/_/ __| /_/ _____|_| |_|_____| ___/|_| |_|_____| |_| |_____|_| _ 5.3
Copyright (c) 1999-2020 The Apache Software Foundation
なお、javaがインストールされていない場合は、次のようなエラーが発生します。
# /usr/local/jmeter/bin/jmeter --version
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
実行コマンド
初期設定が完了したら、binフォルダ配下のjmeterコマンドを実行してみましょう。
必要最低限のコマンドは次のようになります。
/usr/local/jmeter/bin/jmeter -n -t シナリオファイル名
主な実行オプションは次の通りです。必要に応じて
オプション | 概要 |
---|---|
-n | non guiモードで実行 |
-t | シナリオファイルを指定(***.jmx) |
-l | 結果ファイルを指定(***.jtl) |
-e | 実行結果をもとにレポートを作成 |
-o | レポートの出力先を指定 |
-r | スレーブのJMeterを利用して実行 |
-J変数名=xxx | 変数に値を指定(スレーブを利用しない場合) ※1 |
-G変数名=xxx | 変数に値を指定(スレーブを利用する場合) ※1 |
※1.シナリオ側では、「${__P(変数名,初期値)}」のような形で指定します
いくつかコマンド例をあげておきます。結果ファイルやレポート出力場所にファイルまたはディレクトリが存在していると、エラーとなるので実行前に削除しておきましょう。
結果ファイルをcsvへ出力して実行
${JMeterインストールディレクトリ}/bin/jmeter -n -t scenario.jmx -l result.jtl
変数へ値を指定して実行
${JMeterインストールディレクトリ}/bin/jmeter -n -t scenario.jmx -l result.jtl -Jthread=1 -Jrampup=1 -Jloop=1
結果をレポートに出力して実行。出力場所は「repot」フォルダ直下。
${JMeterインストールディレクトリ}/bin/jmeter -n -t scenario.jmx -l result.jtl -Jthread=1 -Jrampup=1 -Jloop=1 -e -o report
まとめ
この記事では、JMeterをCUIで実行をする時に行う初期設定と、主要なオプションについて解説していきました。
小規模なテストであれば問題ありませんが、規模が大きなテストをすると、メモリの指定は必須事項となります。環境に応じて設定変更を行い、実行中にJMeterがボトルネックとなった場合は、設定の見直しをしてみると良いと思います。
~~~~~~~~~~~~~~~~~~~~~
~ JMeterによる負荷テスト実施入門 ~
~~~~~~~~~~~~~~~~~~~~~
第1回:JMeterによる負荷テスト実施入門
第2回:CentOS環境へのJMeterインストールと実行コマンド
第3回:基礎データの取得方法 ←次の記事
第4回:低負荷テストの実施方法
第5回:限界スループットの確認方法
第6回:チューニング実施と効果測定
第7回:マスタスレーブ構成を用いた負荷テストの行い方
参考サービス紹介:JMeterを使った負荷テストツール