Performance Testing Service (PTS) を使用すると、Apache JMeter スクリプトを使用してクラウドベースのストレステストを実行できます。このガイドでは、ローカルで JMeter スクリプトを作成し、PTS JMeter シナリオにアップロードして、最初の Web ページのストレステストを実行する手順を説明します。
前提条件
開始する前に、次の要件を満たしていることを確認してください:
ローカルマシンに Apache JMeter がインストールされていること。この例では
Apache JMeter 5.6.3を使用してスクリプトを作成します。PTS は JMeter 5.0 および 5.6.3 をサポートしています。
ソリューションの概要
JMeter ストレステストを使用するには、最初に Apache JMeter を使用してローカルでストレステストスクリプトを作成します。次の 2 つの手順では、JMeter スクリプトを作成して JMeter シナリオにアップロードし、ストレステストを開始する方法を説明します。
ステップ 1:JMeter スクリプトの作成
-
Apache JMeter で、HTTP リクエストサンプラーを追加し、サーバー名または IP アドレス、ポート番号、HTTP メソッドなどの HTTP リクエストプロパティを設定します。[基本] タブで次のパラメーターを設定します。
パラメータ
説明
例
[プロトコル]
リクエストのプロトコルです。
http[サーバー名または IP]
API のドメイン名です。
www.example.com[ポート番号]
サービスのポート番号です。
80[メソッド]
HTTP メソッドです。
GET -
テスト計画を実行し、[結果をツリーで表示] リスナーで結果を確認します。次のレスポンスは、リクエストが成功したことを示します:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Simple Web Page</title> </head> <body> <h1>Welcome to My Simple Web Page</h1> <p>This is a simple web page created using Flask.</p> </body> </html> デバッグが成功したら、テスト計画ファイルをエクスポートします。この例では、ファイル名を
HTTP_Request.jmxとします。
ステップ 2:スクリプトのアップロードとストレステストの実行
PTS コンソールにログインし、[パフォーマンステスト] > [シナリオ作成] を選択し、[JMeter] をクリックします。
-
シナリオオーケストレーションを設定します。次の表で主要なパラメータを説明します。
パラメータ
説明
例
[シーン]
ストレステストシナリオの名前です。
test-jmxファイルのアップロード
[シーンアセンブリ] タブで、JMeter スクリプトファイルを追加します。
HTTP_Request.jmx[JMeter version]
JMeter のバージョンです。スクリプトの作成に使用した Apache JMeter のバージョンと一致していることを確認してください。一致しない場合、ストレステストが失敗することがあります。
5.6.3 -
負荷設定を設定します。最大仮想ユーザー数を
10に設定し、ストレステストの継続時間と増分期間をどちらも2分に設定します。その他のパラメータは既定値のままにします。ストレステストを開始すると料金が発生するため、実際の要件に合った負荷レベルを選択してください。詳細については、「Billing overview」および「Configure the stress testing model and level」をご参照ください。
-
シナリオをデバッグします。
シナリオをデバッグすることで、設定が有効かどうかを確認し、テストの失敗を防止できます。シナリオのデバッグを推奨します。詳細については、「Debug a stress testing scenario」をご参照ください。API リクエストのレスポンスステータスコードが
200でない場合は、API リクエストが想定どおりに開始できるかどうかを確認してください。デバッグが成功すると、リクエストログ内の該当 API のレスポンスステータスは200になります。
[保存して開始] をクリックします。[注意] ページで、[今すぐ実行] を選択し、[テストは許可されており、適用される法律および規制に準拠しています] チェックボックスを選択して、[開始] をクリックします。
ストレステスト結果の分析
ストレステストが終了すると、PTS は自動的にストレステストシナリオのメトリック、ビジネス詳細、モニタリング詳細、API サンプリングログなどのストレステストデータを収集し、ストレステストレポートを生成します。 [ストレステストレポート] ページでレポートを表示できます。
詳細については、「View a JMeter Performance Testing report」をご参照ください。
よくある質問
JMeter ストレステストは、PTS console の JMeter バージョンがローカルの JMeter バージョンと一致していない、JAR プラグインがすべてアップロードされていない、スクリプトがローカルファイルパスを参照している、または JMeter ストレステストの負荷が想定どおりに割り当てられていないことが原因で失敗する場合があります。以降のセクションでは、これらの問題の解決方法について説明します。
JMeter バージョンの不一致を解決するにはどうすればよいですか?
JMeter の新しいバージョンは通常、古いバージョンと互換性がありますが、潜在的な問題を完全に排除することはできません。 PTS コンソール内の [JMeter バージョン] がローカルの JMeter バージョンと一致することを確認し、クラウドでストレス テストを実行する前にローカルでスクリプトをデバッグしてください。 JMeter 4.x はサポートされていません。
スクリプトと一緒に JAR プラグインとデータファイルをアップロードする必要がありますか?
はい。[シーンアセンブリ] タブで、ローカルデバッグ中に使用したすべての JAR プラグインとデータファイルを、.jmx スクリプトと一緒に JMeter シナリオにアップロードしてください。いずれも省略しないでください。
スクリプトがファイルパスエラーで失敗するのはなぜですか?
スクリプトがファイルを参照している場合は、ローカルでのデバッグ中に記述したローカルファイルパスをすべて削除し、ファイル名のみを残してください。PTS の負荷ジェネレーターはローカルのファイルシステムを共有しないため、パスを残したままにするとエラーが発生します。
PTS はスレッドグループ間で負荷をどのように割り当てますか?
コンソールで設定したターゲットに負荷を到達させるために、PTS はストレステスト中にスクリプトを書き換えます。元のスクリプトは上書きされません。書き換えは次のとおりに行われます:
PTS は、PTS console で設定された同時実行数から、setUp スレッドグループおよび tearDown スレッドグループで設定されたスレッドを差し引きます。PTS はこれら 2 種類のスレッドグループは書き換えず、通常のスレッドグループのみを書き換えます。
残りのスレッドは、通常のスレッドグループ間で割り当てられます。
その結果が 0 未満の場合は 0 として扱われます。
たとえば、スクリプトに 3 つの通常のスレッドグループが含まれており、それらのスレッド数の比率が a:b:c で、シナリオが同時実行数 500 スレッドで設定されていて setUp スレッドグループも tearDown スレッドグループも含まれていないとします。PTS は 500 同時実行スレッドを、a:b:c の比率で 3 つのスレッドグループに割り当てます。
ストレステストの前に、スクリプト内のスレッドグループの種類を確認してください:
|
シナリオ |
スレッド数の設定 |
|
スクリプトに 1 つのスレッドグループのみが含まれている。 |
スレッド数を |
|
スクリプトに複数のスレッドグループが含まれており、同一の負荷を割り当てる必要がある。 |
各スレッドグループに同じスレッド数を設定します。 |
|
スクリプトに複数のスレッドグループが含まれており、比率に応じた負荷を割り当てる必要がある。 |
スレッドグループのスレッド数を同じ比率に設定します。 |
関連ドキュメント
JMeter シナリオの作成 - シナリオ設定オプションの完全なリファレンス
JMeter で CSV パラメータファイルを使用する - 外部データを使用したテストのパラメータ化
JMeter で RPS 制限を設定する - リクエストスループットの制御
JMeter で複数のスレッドグループを使用する場合の注意事項 - 高度なスレッドグループ設定
JMeter 環境管理 - JMeter ランタイム環境の管理
データソース - テスト用のデータソースの構成