開発環境・ツール

JMeterの実行方法とスループット・エラー率の読み方

前回までに用意したシナリオを、いよいよ動かします。実行前に確かめること、スレッド数と待ち時間の決め方、GUIではなくCLIモードで動かす理由、結果の読み方までを説明します。

2025.01.06

承認された時間帯だけ実行する

前の2つの記事で用意したテスト計画を、いよいよ動かします。動かす前に、承認された開始・終了日時と対象サンドボックスのOrg IDを、申請したときの内容と照らし合わせてください。公式のFAQは「Even approved testing can be throttled if it degrades performance on the instance.」(事前承認があっても、インスタンスの性能を落とすようであれば、承認済みのテストでもスロットリングされることがあります)とも書いています。承認された時間帯・対象サンドボックス以外では動かさないでください。

待ち時間を入れる

人がSalesforceの画面を見てから次の操作をするまでの間は、Uniform Random Timerで表します。公式のコンポーネントリファレンスは、この項目を次のように説明しています。

項目意味
Random Delay Maximum待ち時間にランダムで加える最大のミリ秒数
Constant Delay Offset待ち時間に必ず加える固定のミリ秒数

実際の待ち時間は「ランダムな値(0〜Random Delay Maximum)+Constant Delay Offset」の合計です。Random Delay Maximumに1000、Constant Delay Offsetに2000を入れると、待ち時間は2000〜3000ミリ秒の間でランダムに変わります。

  1. タイマを追加する

    スレッドグループの下にUniform Random Timerを追加します。

  2. 2つの値を入れる

    Random Delay MaximumとConstant Delay Offsetに、それぞれミリ秒で値を入れます。

JMeterでスレッドグループを右クリックし、追加からタイマ、一様乱数タイマを選ぶメニュー
スレッドグループを右クリックし、追加>タイマ>一様乱数タイマの順にたどります。どこにぶら下げるかを見てください。
一様乱数タイマの設定画面。最大遅延時間に100.0、遅延時間オフセット定数に0が入っている
追加した直後の一様乱数タイマです。入力するのは最大遅延時間と遅延時間オフセット定数の2つだけです。
一様乱数タイマの設定画面。最大遅延時間1000、遅延時間オフセット定数2000が入力されている
本文の例を入れた状態です。この2つの値で、待ち時間が2000〜3000ミリ秒の範囲に収まります。

スレッド数を決める

スレッドグループの設定は3つです。

項目意味
スレッド数同時にアクセスする利用者数
Ramp-Up期間全スレッドが動き出すまでにかける秒数
ループ回数1スレッドがシナリオを繰り返す回数

公式のユーザーズガイドは、Ramp-Up期間の決め方を「スレッド数と同じ秒数から始めて、様子を見ながら増減する」としています。スレッド数10・Ramp-Up期間10秒なら、1秒に1スレッドずつ動き出す計算です。⚠️ Ramp-Up期間を0に近づけるほど、開始直後に負荷が集中します。申請したRPS(1秒あたりのリクエスト数)を超えないよう、スレッド数とRamp-Up期間を合わせて決めてください。

スレッドグループの設定画面。スレッド数1、Ramp-Up期間1、ループ回数1が入っている
スレッドプロパティの3項目です。まずRamp-Up期間に1秒を入れた状態を見てください。
スレッドグループの設定画面。Ramp-Up期間の欄に10が入力されている
同じ画面でRamp-Up期間を10秒にした状態です。数字を大きくするほど立ち上がりが緩やかになります。

GUIではなくコマンドラインで動かす

⛔ 実際に負荷をかける実行は、GUIで行いません。公式のガイドは「Don't run load test using GUI mode!」と明記しています。GUIは前の記事で作ったテスト計画の確認・デバッグ用です。

Salesforceの取引先リストビュー。同期サンプルテスト用という取引先が1件だけ表示されている
負荷をかける対象の画面です。テスト用の取引先が1件だけ入っている状態を見てください。
取引先リストビューで、取引先名のリンクが赤枠で囲まれている
同じ画面です。赤枠の取引先名リンクが、シナリオで開くページにあたります。
JMeterの記録コントローラの下に、apexページへのリクエストが1件記録されている
記録コントローラの下に入った赤枠のサンプラーが、実行されるリクエストです。
jmeter -n -t plan.jmx -l plan.jtl -e -o report

保存したテスト計画(plan.jmx)をCLIモードで実行し、結果をplan.jtlに書き出し、実行後にHTMLレポートをreportフォルダへ生成します。

オプション意味
-nCLIモード(GUIを使わない)で実行する
-t実行するテスト計画(.jmx)を指定する
-l結果を書き出すファイル(.jtl)を指定する
-e実行後にHTMLレポートを生成する
-oHTMLレポートの出力フォルダを指定する。既存の空でないフォルダは指定できません

結果を読む

テスト計画をGUIで確認する段階では、リスナーで数字を見ます。個々のリクエストを見るならView Results Tree、まとめた数字を見るならAggregate ReportかSummary Reportです。公式のリファレンスは、この2つのレポートが次の列を持つと説明しています。

列意味
# Samples同じ名前のリクエストが実行された回数
Average平均の応答時間(ミリ秒)
Min・Max最短・最長の応答時間
Error %エラーになったリクエストの割合
Throughput1秒(または分・時)あたりに処理できたリクエスト数
JMeterで追加からリスナーをたどり、結果を表で表示を選んでいるメニュー
リスナーは追加>リスナーから選びます。並んでいる候補の中から見たいものを選んでください。
結果をツリーで表示のリスナー。左に3件のサンプル、右にSampler resultの詳細が出ている
結果をツリーで表示です。赤枠の中で、1件ずつの応答時間や接続時間を確認できます。
結果を表で表示のリスナー。1件の結果行にサンプル時間2318と緑の成功マークが出ている
結果を表で表示です。赤枠の行でSample Timeと、成功を示す緑の印を確認します。
スループットはサーバ側から見た処理件数です。同じスレッドの中に別のサンプラーやタイマがあると、その分だけ全体の時間が延びてスループットは下がります。名前の違うリクエストを同じ名前で記録すると、レポート上は1つの行にまとまってしまうので、リクエストごとに名前を分けてください。

Aggregate Reportは個々のサンプルを保持するためメモリを多く使い、Summary Reportは同じ集計をより少ないメモリで行います。スレッド数が多い試験では、Summary Reportを使ってください。

ここで間違えやすい

間違い何が起きるか
承認された時間帯・対象を確かめずに実行する承認済みでも性能低下があればスロットリングされます
GUIのまま負荷をかける公式が非推奨としている使い方です
Ramp-Up期間を極端に短くする開始直後にRPSが跳ね上がり、承認した数字を超えます
名前の違うリクエストを同じラベルで記録するAggregate Report・Summary Reportの集計が正しく分かれません

確認した環境

  • 2026年9月/CLIモードの起動オプション、Uniform Random Timer・Aggregate Report・Summary Reportの項目の意味をjmeter.apache.orgのGetting StartedとComponent Referenceで確認しています
  • 事前承認済みでもスロットリングされ得ることはhelp.salesforce.comの公式FAQで確認しています
  • 負荷試験は、承認済みのサンドボックスでだけ実行してください

まとめ

  • 実行の前に、承認された開始・終了日時とOrg IDを申請内容と照らし合わせます。承認済みでも性能低下があればスロットリングされます
  • Uniform Random Timerの待ち時間は「ランダムな値+固定値」の合計です
  • Ramp-Up期間はスレッド数と同じ秒数から始めて調整します
  • 実際の負荷はjmeter -n -t ... -l ... -e -o ...のCLIモードで動かします。GUIは確認用です
  • 結果はAggregate ReportかSummary Reportで、Error %とThroughputを中心に読みます

Salesforceの導入・運用についてご相談ください

導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。