0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JMeterを利用した負荷テストで役立った機能

Last updated at Posted at 2025-01-23

概要

JMeterを利用してシステムの性能検証を実施する機会があったので、検証に役立った機能をまとめました。

今回の検証ではApache JMeter 5.6.3を利用しています。
JMeterのインストール方法については、公式サイトからダウンロードしたファイルを展開するだけのため割愛します。
https://jmeter.apache.org/download_jmeter.cgi

利用機能

① Ultimate Thread Group

JMeterのノーマルなThread Groupでは、負荷を調整するために以下のようなパラメータがあります。

  • スレッド数:起動するスレッドの数
  • Ramp-Up 期間(秒):指定スレッド数に到達するまでの助走期間(秒)
  • ループ回数:各スレッド毎のループ回数(無限ループ設定も有り)
  • 持続時間(秒):無限ループ設定時のループ持続時間(秒)
  • 起動遅延(秒):テスト実行~スレッド起動までの時間(秒)

jmeter_001.JPG

ノーマルなThread Groupは一定の負荷で電文を送信することには適していますが、テスト中に負荷を変化させることは難しいです。
そのため、時間経過とともに負荷を増減するようなテストシナリオを作成したい場合、Ultimate Thread Groupを利用します。
Ultimate Thread Groupの場合、Threads Scheduleを設定してテスト実行中に起動するスレッド数を調整します。

  • Start Threads Count:起動するスレッドの数
  • Initial Delay,sec:テスト実行~スレッド起動までの時間(秒)
  • Startup Time,sec:指定スレッド数に到達するまでの助走期間(秒)
  • Hold Load For,sec:指定スレッド数でのループ持続時間(秒)
  • Shutdown Time:ループ終了後、起動したスレッドを全て停止するまでの時間(秒)

jmeter_002.JPG

利用方法

Ultimate Thread GroupはJMeterのデフォルト機能ではないため、プラグインの追加が必要です。
以下のサイトからjmeter-plugins-casutg-X.XX.jarをダウンロードし、JMeterを展開したディレクトリのlib/ext配下に配置します。
https://jmeter-plugins.org/wiki/UltimateThreadGroup/

追加ファイルの読込のため、JMeterを再起動します。
再起動後、テスト計画を選択してコンテキストメニューから 追加Threads(Users) を選択すると、jp@gc - Ultimate Thread Groupが追加されていることが確認できます。

jmeter_003.JPG

② 定数スループットタイマ

定数スループットタイマは、スレッド毎の単位時間あたりのリクエスト実行回数を制御します。
タイマを利用しない場合、各スレッドの実行処理によっては負荷の偏りが出来てしまいます。
一定間隔で負荷を掛ける場合、定数スループットタイマを利用します。

利用方法

対象スレッドグループを選択してコンテキストメニューから 追加タイマ定数スループットタイマ を選択します。

jmeter_004.JPG

定数スループットタイマの主な設定は以下の2つです。

  • ターゲットスループット(サンプル数/分):1分間あたりのリクエスト実行数
  • Calculate Throughput based on:設定の適用範囲

jmeter_005.JPG

例えばターゲットスループットを60と設定した場合、起動したスレッドは1分あたり60回のリクエストを一定間隔で実行することになります。
1スレッド1TPS(TransactionPerSecond)となるため、スレッド数で負荷の調整がしやすくなります。

③ レポート出力

JMeterを利用してテストを行う場合、数電文程度の動作確認であればGUIからの実行でも問題ありませんが、
数百~数千TPSといった高負荷なテストを実施する場合は基本的にCUIで行います。GUIがボトルネックとなって正確な性能が測定できない可能性があるためです。
コマンドラインからJMeterを実行する際、結果を確認するのに便利なのがレポート出力オプションです。

利用方法

レポートを出力するには、JMeter実行時にeオプションおよびoオプションを指定します。

jmeter -n -t ./testPlan.jmx -l ./testLog.jtl -e -o testReport

テスト終了後、oオプションで指定したディレクトリ配下にレポートファイルを出力します。

jmeter_006.JPG

レポートのデータ粒度はデフォルトでは1分のため、必要に応じてJMeterの設定ファイルuser.propertiesのパラメータjmeter.reportgenerator.overall_granularityをテスト実行前に変更してください。

user.properties設定例
76c76
< jmeter.reportgenerator.overall_granularity=1000
---
> #jmeter.reportgenerator.overall_granularity=60000

出力されたレポートにはテスト実行結果サマリのほか、実行中の平均レスポンス時間やアクティブスレッド数などのグラフが含まれます。

jmeter_007.JPG
jmeter_008.JPG
jmeter_009.JPG

参考

https://engineers.fenrir-inc.com/entry/2022/03/08/115602
https://qiita.com/tatesuke/items/827e6190753964e46814
https://designetwork.daichi703n.com/entry/2019/02/03/jmeter-graph-granularity

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?