GUIモード vs CLIモード

比較項目GUIモードCLIモード(Non-GUI)
用途テストプランの作成・デバッグ・動作確認本番の負荷テスト実行
メモリ消費大(GUIレンダリングのオーバーヘッドあり)小(GUIなしのため軽量)
最大スループット低い(GUIが帯域を消費する)高い(JMeter の性能を最大限発揮)
リアルタイム確認リスナーでリアルタイム表示可標準出力にサマリーが定期出力される
推奨ケースシナリオ確認、少数スレッドでのデバッグ50スレッド以上の本番負荷テスト

💡 JMeter 公式の推奨

JMeter の公式ドキュメントでは「本番の負荷テストには CLI モードを使うこと」を強く推奨しています。GUI モードは可能な限りテストプランの設計・デバッグのみに使い、実際の負荷計測は必ず CLI モードで実施してください。

GUIモードでの実行手順

GUI モードでテストを実行するには次の手順で行います。

  1. テストを実行する前に、リスナーの結果をクリアしておく(ツールバーの🗑ボタン、または Run → Clear All)
  2. ツールバーの ▶ Startボタンをクリック(またはCtrl+R)
  3. テスト実行中はツールバーに「Running」と表示される
  4. リスナー(Summary Report など)でリアルタイムの結果を確認
  5. テスト完了後、自動的にスレッドが停止する

⚠️ 実行前に必ず結果をクリアする

前回のテスト結果が残っていると、新旧の結果が混在して正確な計測ができません。Run → Clear All(Ctrl+Shift+E)で全リスナーの結果をクリアしてから実行する習慣をつけましょう。

CLIモードの基本コマンド

CLIモードでは jmeter(または jmeter.bat)コマンドを使用します。

Shell(Windows)
jmeter -n -t test-plan.jmx -l results/result.jtl
Shell(macOS / Linux)
./jmeter -n -t test-plan.jmx -l results/result.jtl

実行中は以下のようなサマリーが定期的に出力されます。

Creating summariser <summary> Started test run, time=2026-06-16 12:00:00 summary = 30 in 00:00:05 = 6.0/s Avg: 187 Min: 105 Max: 512 Err: 0 (0.00%) summary = 60 in 00:00:10 = 6.0/s Avg: 192 Min: 108 Max: 523 Err: 0 (0.00%) summary = 90 in 00:00:15 = 6.0/s Avg: 189 Min: 101 Max: 498 Err: 0 (0.00%) summary = 90 in 00:00:30 = 3.0/s Avg: 189 Min: 101 Max: 523 Err: 0 (0.00%) Tidying up ... ... end of run

CLIモードでHTMLレポートを同時生成する

JMeter 3.0 以降では、-e-o オプションを追加することで テスト実行と同時に HTML ダッシュボードレポートを生成できます。

Shell
jmeter -n \
  -t test-plan.jmx \
  -l results/result.jtl \
  -e \
  -o results/html-report/

Windows の場合はバックスラッシュの改行が使えないため1行で記述します。

Shell(Windows 1行)
jmeter -n -t test-plan.jmx -l results/result.jtl -e -o results/html-report/

テスト完了後、results/html-report/index.html をブラウザで開くと詳細なダッシュボードが表示されます。

⚠️ -o で指定するディレクトリは空である必要がある

HTML レポートの出力先ディレクトリが既に存在し、かつ中にファイルがある場合はエラーになります。再実行時は古いディレクトリを削除するか、新しいディレクトリ名に変更してください。

CLIオプション一覧

オプション説明
-nNon-GUI モードで実行する(必須)
-t <file>実行するテストプランファイル(.jmx)を指定
-l <file>結果ログファイル(JTL)の出力先を指定
-eテスト終了後に HTML ダッシュボードレポートを生成する
-o <dir>HTML レポートの出力ディレクトリを指定(空ディレクトリが必要)
-j <logfile>JMeter のシステムログ出力先を指定
-p <file>カスタムプロパティファイルを指定
-J <name>=<val>コマンドラインからプロパティを上書き(例: -Jthreads=50)
-G <name>=<val>グローバルプロパティをサーバーに渡す(分散テスト時に使用)
-L <cat>=<lvl>ログレベルを変更(例: -L jmeter.engine=DEBUG)

大規模テスト用JVMチューニング

デフォルトの JVM ヒープサイズ(512MB)では大規模テストに不足することがあります。 JMeter の起動スクリプト(bin/jmeter または bin/jmeter.bat)の JVM_ARGS を編集して調整します。

bin/jmeter(macOS / Linux)
# 4GB に増やす例
export HEAP="-Xms1g -Xmx4g -XX:MaxMetaspaceSize=256m"
bin/jmeter.bat(Windows)
set HEAP=-Xms1g -Xmx4g -XX:MaxMetaspaceSize=256m

推奨値の目安

スレッド数 100〜500 程度であれば -Xmx2g(2GB)で概ね十分です。それ以上の場合は -Xmx4g 以上を検討し、実行マシンのメモリと相談しながら調整してください。また、-Xms(初期ヒープ)は -Xmx と同値にするとGC停止を抑制できます。

実行前チェックリスト

本番負荷テストを実行する前に、以下の項目を確認してください。

チェック項目確認内容
✅ テスト対象の許可テスト対象のサーバー管理者からテスト実施の許可を得ているか
✅ シナリオの事前確認GUI モード・1スレッド・1ループで動作確認済みか
✅ リスナーの無効化View Results Tree など大量メモリを使うリスナーが無効になっているか
✅ 結果フォルダの準備JTL 出力先・HTML レポート出力先が空の状態か
✅ JVM ヒープの確認スレッド数に応じた適切なヒープサイズが設定されているか
✅ テスト時間の確認スレッド数 × ループ回数 × Think Time で想定実行時間を計算しているか
✅ 監視体制テスト中にサーバーの CPU・メモリ・エラーログを監視する体制があるか