Apache JMeter は、パラメーター化、アサーション、豊富な拡張機能エコシステムを特徴とする、性能テスト用のオープンソースツールです。Performance Testing Service (PTS) は、ネイティブエンジンのサポート、容易な水平スケーリング、統合されたクラウドリソースのモニタリングを提供することで JMeter を強化します。これにより、高同時実行テストを実行し、パフォーマンスの問題を効率的に特定できます。このトピックでは、JMeter 性能テストの作成方法と実行方法について説明します。
ステップ 1: JMeter シナリオの作成
-
JMeter テストファイルをアップロードします。
-
PTS コンソールにログインし、を選択し、JMeter をクリックします。
-
Create JMeter Scenarioページで、Scenarioを入力します。
-
Scenario Settingsセクションで、拡張子が
.jmxの JMeter テストファイルをアップロードします。ファイル名にスペースを含めることはできません。JMX テストファイルをアップロードすると、PTS は不足しているプラグインを自動的に追加します。詳細については、「JMeter プラグインの自動補完」をご参照ください。
-
[ファイルをアップロード] をクリックして、CSV データファイルや JAR プラグインファイルなど、その他の必要なファイルをアップロードします。
重要既存のファイルと同じ名前のファイルをアップロードすると、既存のファイルは上書きされます。ファイルが変更されたかどうかを確認するには、アクション列からその MD5 ハッシュを取得し、ローカルファイルの MD5 ハッシュと比較します。
制限事項:
-
JMX スクリプトファイル: ファイルサイズは 2 MB を超えることはできません。複数の JMX スクリプトファイルをアップロードできますが、テスト用に選択できるのは 1 つだけです。
-
JAR ファイル: ファイルサイズは 10 MB を超えることはできません。アップロードする前に、ローカルの JMeter 環境で JAR ファイルをデバッグしてください。
-
CSV ファイル: ファイルサイズは 60 MB を超えることはできません。60 MB を超えるファイルの場合は、OSS データソース機能を使用してインポートします。JMX 以外のファイルの合計数は 20 を超えることはできません。
重要-
CSV ファイルを準備する際、XLSX ファイルの拡張子を変更しないでください。Excel や Numbers などのソフトウェアから CSV 形式でファイルをエクスポートするか、Apache Commons CSV などのライブラリを使用してプログラムで生成してください。
-
JMX スクリプトがデータファイルを参照する場合、CSV Data Set Config 要素の Filename フィールドをファイル名のみに設定してください。ファイルパスは含めないでください (次の図を参照)。そうしないと、PTS はデータファイルを読み取ることができません。このルールは、__CSVRead 関数を使用する場合や、JAR パッケージ内のファイルを参照する場合にも適用されます。
-
-
-
複数の JMX ファイルをアップロードした場合は、このテストシナリオの JMeter スクリプトとして使用するファイルを 1 つ選択します。
-
(オプション) CSV ファイルの場合、Split Fileを選択して、ファイルから一意のデータセグメントを各負荷生成エージェントに配布できます。このオプションを選択しない場合、各負荷生成エージェントは同じデータを使用します。詳細については、「JMeter で CSV パラメーターファイルを使用する」をご参照ください。
-
(オプション) アップロードしたスクリプトにタイマーやコントローラーなどの分散コンポーネントが含まれている場合、複数の負荷生成エージェントにまたがる分散動作を設定して、より正確な性能テストを行うことができます。
-
Synchronous timerを設定します。JMeter スクリプトにタイマーが含まれている場合、スクリプトの設定をグローバルに適用するか、Single Generatorに適用するかを選択します。
-
Constant Throughput Timerを設定します。JMeter スクリプトにタイマーが含まれている場合、スクリプトの設定をグローバルに適用するか、Single Generatorに適用するかを選択します。詳細については、「分散定数スループットの例」をご参照ください。
-
-
依存環境の使用を選択します。詳細については、「JMeter 環境管理」をご参照ください。
-
はいを選択した場合、すでに作成した環境を選択する必要があります。
-
不可を選択した場合、JMeter のバージョンを選択します。PTS は Apache JMeter 5.0 と Java 11 をサポートしています。
-
-
-
負荷を設定します。
負荷の設定方法の詳細については、「負荷パターンと規模の設定」をご参照ください。
-
(オプション) 詳細設定を構成します。
詳細設定には、ログサンプリングレート、DNS 設定、分散コンポーネント設定が含まれます。このセクションはデフォルトで無効になっています。これらの設定を構成するには、スイッチをオンにします。
デフォルト設定
デフォルト設定が使用されます:ログサンプリングレートは 1%、DNS キャッシュはループごとにクリアされず、システムの DNS リゾルバーが使用され、同期タイマーと定数スループットタイマーの両方が単一のエージェントにのみ適用されます。

カスタム設定
-
ログサンプリングレートの設定
ログサンプリングレートをカスタマイズできます。デフォルトのレートは 1% です。サンプリングレートを下げるには、
(0,1]の範囲の値を入力します。レートを上げるには、(1,50]の範囲で 10 の倍数を入力します (例:20)。重要1% を超えるサンプリングレートには追加料金が発生します。例えば、サンプリングレートが 20% の場合、VUM コストの 20% の追加料金が発生します。詳細については、「従量課金」をご参照ください。
-
DNS キャッシュの設定
リクエストごとに DNS キャッシュをクリアするかどうかを選択できます。DNS キャッシュをクリアすることを選択した場合、システムの DNS リゾルバーまたはカスタム DNS リゾルバーを使用できます。
次のような状況では、カスタム DNS リゾルバーを使用する必要がある場合があります:
-
分散コンポーネントの設定
スクリプトにタイマーやコントローラーなどの分散コンポーネントが含まれている場合、複数の負荷生成エージェントにまたがる分散動作を設定して、より正確で効果的な性能テストを行うことができます。
-
同期タイマーを設定します。JMeter スクリプトにタイマーが含まれている場合、スクリプトの設定がグローバルに適用されるか、単一エージェントに適用されるかを選択します。

-
グローバル: スクリプト内の値は、クラスター全体の合計しきい値として扱われます。この値は、負荷生成エージェントの数で除算されます。例えば、2 つの負荷生成エージェントが使用され、スクリプトでしきい値が 1,000 に設定されている場合、各エージェントのしきい値は 500 になります。
-
単一エージェント: スクリプト内の値は、個々の負荷生成エージェントのしきい値として適用されます。スクリプトの内容は変更されません。同時実行数の設定がこの値と一致していることを確認してください。例えば、2 つの負荷生成エージェントが使用され、スクリプトでしきい値が 1,000 に設定されている場合、各エージェントのしきい値は 1,000 となり、クラスターの合計しきい値は 2,000 になります。
-
-
定数スループットタイマーを設定します。JMeter スクリプトにコントローラーが含まれている場合、スクリプトの設定がグローバルに適用されるか、単一エージェントに適用されるかを選択します。

-
グローバル: スクリプト内の値は、クラスター全体の合計目標スループットとして扱われます。この値は、負荷生成エージェントの数で除算されます。例えば、テストで 2 つの負荷生成エージェントと 100 の同時実行ユーザーを使用するとします。スクリプトには 1 つのスレッドグループがあり、目標スループットは毎分 100 で、計算モードは現在のスレッド用です。シナリオの毎分あたりの合計目標スループットは 2 × (100 同時実行ユーザー数 / 2) × (100 / 2) = 5,000 です。
-
単一エージェント: スクリプト内の値は、個々の負荷生成エージェントの目標スループットとして適用されます。スクリプトの内容は変更されません。同時実行レベルがこの値と一致していることを確認してください。例えば、テストで 2 つの負荷生成エージェントと 100 の同時実行ユーザーを使用するとします。スクリプトには 1 つのスレッドグループがあり、目標スループットは毎分 100 で、計算モードは現在のスレッド用です。シナリオの毎分あたりの合計目標スループットは 2 × (100 同時実行ユーザー数 / 2) × 100 = 10,000 です。
-
-
-
-
(オプション) クラウドリソースのモニタリングを追加します。
モニタリングを追加すると、テスト中およびテストレポートで対応するモニタリングデータを表示できます。この機能はデフォルトで無効になっています。設定するには、スイッチをオンにします。
-
(オプション) その他の情報を追加します。
テストの所有者と備考を追加できます。この機能はデフォルトで無効になっています。設定するには、スイッチをオンにします。
ステップ 2: テストの実行
-
本格的なテストを実行する前に、シナリオをデバッグして、ネットワーク接続、プラグインの整合性、スクリプト設定エラーなどの問題を確認できます。これにより、テストの失敗を防ぐことができます。シナリオのデバッグは、設定を検証するための重要なステップです。シナリオをデバッグするには、Debugをクリックしてシナリオデバッグページを開きます。詳細については、「シナリオのデバッグ」をご参照ください。
-
Save and Startをクリックします。注意ダイアログボックスで、今すぐ実行を選択し、The test is permitted and complies with the applicable laws and regulations.を選択してから、[テスト開始] をクリックします。
-
(オプション) テスト中に、テストデータを監視し、シナリオの同時実行数を調整できます。
-
Data
項目
説明
リアルタイム VUM
これは、テストによって消費されたリソースの合計で、VUM (仮想ユーザー分) で測定されます。
リクエスト成功率 (%)
統計期間中のすべてのリクエストの成功率。
平均 RT (成功/失敗)
-
成功 RT 平均 (ms): すべての成功したリクエストの平均応答時間。
-
失敗 RT 平均 (ms): すべての失敗したリクエストの平均応答時間。
TPS
リクエストの総数を統計期間 (秒) で割った値。
エラー数
リクエスト例外の数。一般的な原因には、接続タイムアウトやリクエストタイムアウトなどがあります。
Traffic (Request/Response)/Seconds
負荷生成エージェントによって送信されたリクエストトラフィックと受信された応答トラフィック。
同時実行数 (現在/最大)
テストの同時実行数。テスト中に同時実行数を調整すると、現在の同時実行数と設定された最大同時実行数が表示されます。ウォームアップ段階では、同時実行数が設定値に達しない場合がありますが、ウォームアップ期間が終了するとその値に達します。
Speed Regulationをクリックし、数値を入力してテスト中にシナリオの同時実行数を調整します。
合計リクエスト数
テスト中に送信されたリクエストの総数。
説明モニタリングデータは、Backend Listener からの単純な集約計算に基づいています。負荷生成エージェントの統計サンプリング期間は 15 秒で、データ集約サイクルも 15 秒であるため、データ遅延が発生する可能性があります。
-
-
設定情報
[設定情報] タブには、負荷ソース、持続時間、トラフィックモデル、負荷生成エージェントの数など、シナリオ設定に関する基本情報が一覧表示されます。
-
テスト詳細
-
Testing Detailsタブで、個々のリンクの右側にある [チャートを表示] をクリックすると、TPS、成功率、応答時間、トラフィックなどのリアルタイムデータを表示できます。
-
Load Generator Performanceタブをクリックすると、すべての負荷生成エージェントの時系列チャートが表示され、CPU 使用率、5 分間の負荷平均、メモリ使用率、ネットワークトラフィックなどのメトリックを確認できます。また、フィルターを適用して特定の負荷生成エージェントのパフォーマンスを表示することもできます。
-
ECS、SLB、RDS、または ARMS のモニタリングを追加した場合、Cloud Resource Monitoringタブをクリックして、関連するモニタリング情報を表示できます。
-
-
サンプリングログ詳細
[サンプリングログ] タブでは、テストサンプラー、応答ステータス、または RT 範囲でログをフィルターして、ログの詳細を表示できます。
-
テストサンプラー、応答ステータス、またはその他の基準でログをフィルターします。ログの アクション列で、[詳細の表示] をクリックします。
-
ログの詳細ダイアログボックスで、一般タブのログフィールドとその値を表示します。右上隅で表示形式を 一般と HTTP プロトコルスタイルに切り替えることができます。
-
JMeter スクリプトで Embed resources from HTML files (Embedded Resources from HTML Files) が設定されている場合、ログ詳細に Sub-request Detailsタブが表示されます。
サブリクエストを選択して、対応するリクエストログを表示できます。
-
Timing Waterfallタブには、メインリクエストと各サブリクエストにかかった時間が表示されます。
-
Trace Viewタブには、テスト対象 API のアップストリームおよびダウンストリームの呼び出しトレース詳細が表示されます。
-
-
-
ステップ 3: テストレポートの表示
テストが停止すると、システムは自動的にデータを収集し、テストレポートを生成します。このレポートには、JMeter シナリオとその特定のリクエストの動的なパフォーマンス情報が表示されます。
-
PTS コンソールにログインし、を選択します。
-
レポートリストページで、JMeter シナリオタイプを選択します。対象のレポートを見つけ、アクション列の [レポートを表示] をクリックします。詳細については、「JMeter テストレポートの表示」をご参照ください。
説明トレンドチャートでは、各データポイントの統計サンプリング期間は 15 秒であり、最終レポートで初期データの遅延が発生する可能性があります。テストレポートデータは 30 日間保持されます。レポートをエクスポートしてローカルストレージに保存できます。
(オプション) ステップ 4: テストレポートのエクスポート
現在のテストレポートをローカルコンピューターにエクスポートできます。
-
レポート詳細ページで、Export Reportをクリックします。
-
[ウォーターマーク付きバージョン] または [ウォーターマークなしバージョン] を選択して、テストレポートを PDF ファイルとしてダウンロードします。
JMeter 性能テストのユースケース
JMeter 性能テストは、次のシナリオに適しています:
-
高同時実行の分散型性能テストを実行する必要がある場合。
-
テスト中のリアルタイム、秒単位のモニタリングと、自動生成されるレポートが必要な場合。
-
JMeter スクリプトとその環境依存関係の一元管理。
具体的なユースケースの例については、「JMeter を使用したファイルアップロードのシミュレーション」をご参照ください。