テスト実施#2_CentOS環境へのJMeterインストールと実行コマンド

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を使った負荷テストツール

コメントは受け付けていません。