主要メトリクスの意味

JMeter の Aggregate Report や Summary Report に表示される主要なメトリクスを確認します。

メトリクス説明良い値の目安
Average(平均応答時間)全リクエストの平均レスポンスタイム(ms)用途による。Webページは 1000ms 以下が目安
Median(中央値)応答時間の中央値。外れ値の影響を受けにくい平均と近ければ分布が安定している
90th Percentile90%のリクエストがこの時間以内に完了SLA 定義に使用。通常 Avg より 50〜100%程度大きい
99th Percentile99%のリクエストがこの時間以内に完了。最悪ケースに近いSLA の上限値として設定されることが多い
Throughput(スループット)1秒あたりのリクエスト処理数(req/s)高いほど良い。サーバーの処理能力上限が指標
Error %(エラー率)失敗したリクエストの割合本番テストでは 0〜0.1% が理想

スループットの読み方

スループット(Throughput) は「サーバーが単位時間内に処理できるリクエスト数」を表します。 負荷をかけるにつれてスループットがどう変化するかを観察することが重要です。

典型的なスループットカーブには次のパターンがあります。

パターン意味対応
負荷増加に比例して上昇サーバーに余裕がある。処理能力未到達さらにスレッドを増やして上限を探る
あるスレッド数で頭打ちサーバーの処理能力に達した。これがサーバーの最大スループットこのスレッド数が設計負荷の基準値になる
負荷増加でスループット低下オーバーロード状態。リクエストがキューに溜まっているアプリやサーバーのボトルネック調査が必要

応答時間の分析

平均応答時間だけでなく、パーセンタイル分布 を確認することが重要です。

💡 平均値に騙されないために

例えば「平均 300ms」と報告があっても、99%tile が 5000ms の場合は 1%のユーザーが5秒待たされていることになります。ユーザー体験の評価には 95th または 99th パーセンタイルを使うことを強く推奨します。

応答時間の分析観点:

  • 標準偏差(Std. Dev.)が大きい → 応答時間のばらつきが大きい。負荷が高い時間帯に急激に悪化している可能性
  • Max が Avg の 10 倍以上 → 外れ値(スパイク)が発生している。GC やDB接続待ちが原因のことが多い
  • 負荷増加とともに応答時間が急上昇 → キューイングが発生している。サーバーのスレッドプールや接続数の設定見直しが必要

エラー率の確認と原因特定

エラー率(Error%)が高い場合は、どのリクエストでどのようなエラーが起きているかを 特定する必要があります。

エラーの原因を調べる手順:

  1. GUI モードで View Results Tree を確認し、失敗したサンプルの Response data タブを確認する
  2. CLI テストの場合は JTL ファイルを開き、successfalse の行を抽出する
  3. レスポンスコード(4xx・5xx)と、アサーション失敗を切り分ける
エラーの種類主な原因
HTTP 429 Too Many Requestsサーバーのレート制限に引っかかっている。負荷が高すぎる
HTTP 500 Internal Server Errorアプリケーションのバグ、DB 接続エラー、メモリ不足など
HTTP 503 Service Unavailableサーバーが過負荷状態。スレッドプールが枯渇している
Connection refusedサーバーが応答できない。ポートが閉じているかサービスが停止
Connection timeoutネットワークの問題、またはサーバーが応答を返せない状態
Assertion failureレスポンスの内容が期待値と異なる。ビジネスロジックのバグの可能性

HTMLダッシュボードレポートの見方

-e -o オプションで生成される HTML レポートには、複数のチャートと詳細テーブルが含まれます。 index.html をブラウザで開くと確認できます。

セクション内容
APDEX SummaryApplication Performance Index。1.0 が理想。0.7 以上で「許容」、0.7 未満で要改善
Statistics TableAggregate Report と同等の集計表。パーセンタイル・エラー率・スループットを一覧表示
Over Time グラフ応答時間・スループット・エラー数の時系列グラフ。テスト中の傾向変化を視覚的に確認できる
Response Times Distribution応答時間のヒストグラム。正規分布に近いか、裾が重いかを確認する
Response Time Percentiles各パーセンタイルの応答時間をグラフ表示
Active Threads Over Timeテスト中のスレッド数の推移。ランプアップが正しく機能しているかを確認

APDEX(Application Performance Index)について

APDEX はユーザー満足度を 0〜1 のスコアで表すメトリクスです。「Tolerated(許容)」と「Satisfied(満足)」の閾値を設定(デフォルトは 500ms / 1500ms)し、各レスポンスが満足・許容・不満のどれに分類されるかで計算します。JMeter の HTML レポートでは jmeter.reportgenerator.apdex_satisfied_threshold プロパティで閾値を変更できます。

ボトルネック特定のアプローチ

テスト結果から問題が見つかった場合、JMeter の結果だけでボトルネックを特定するのは困難です。 サーバーサイドの監視ツールと組み合わせて原因を掘り下げる必要があります。

問題の症状調査する観点
応答時間が急増するサーバーのCPU使用率・メモリ使用率・スレッドプールの状態を確認
エラーが急増するアプリのエラーログ・DBの接続数上限・スレッドプールの枯渇を確認
スループットが頭打ちになるアプリケーションの並行処理数上限・DBクエリのボトルネック・ネットワーク帯域幅を確認
特定のエンドポイントのみ遅いそのエンドポイントのDBクエリ・外部API呼び出し・ビジネスロジックを重点調査

代表的なサーバー監視ツールとしては、Prometheus + Grafana(メトリクス)、 DatadogNew Relic(APM)、 Java VisualVM(JVMプロファイリング)などがあります。 JMeter の Backend Listener を使えば、テスト実行中のメトリクスを Grafana ダッシュボードにリアルタイム表示することも可能です。