Performance Testing (PTS) のアクセスログに基づくストレステスト機能を使用すると、実際のゲートウェイトラフィックのリプレイを迅速に実行できます。この機能は、サーバーに対して非侵入的で、ゲートウェイログのみに依存します。PTS コンソールでいくつかの簡単な手順で設定できます。このトピックでは、この機能の使用方法について説明します。
概要
アクセスログに基づくストレステストでは、簡単な設定で実際のゲートウェイトラフィックをリプレイできます。この機能は、テストリクエストのパラメーター化、テストシナリオの自動作成、および簡単なログイン API 設定によって期限切れのログイン状態の問題を解決できます。設定プロセスは、主に 4 つのモジュールで構成されます。
-
ログプロデューサーの設定:アクセスログは、ALB、CLB、MSE gateway、または ECS インスタンス上の自己管理 Web サービスから取得される場合があります。まず、アクセスログを Log Service (SLS) に転送する必要があります。詳細については、「ALB アクセスログの設定」、「CLB アクセスログの設定」、「MSE gateway のログ転送の有効化」、および「NGINX 設定モードを使用したテキストログの収集」をご参照ください。
-
Log Service の設定:プロデューサーから転送されたログを受信するように Log Service を設定します。
-
アクセスログに基づくストレステストの設定:Log Service に保存されているログを分析して、テスト対象の API を特定し、テストシナリオを作成します。
-
PTS テストシナリオの編集:テストシナリオが作成されると、PTS シナリオエディターにリダイレクトされます。このページで、シナリオをさらに設定するか、直接デバッグしてテストを開始できます。
ログ仕様
-
URL フィールドには、インデックスと値の両方が必要です。インデックス名は、「request_uri」、「path」、「request_url」、「url」、「uri」、「requestURI」、または「requestURL」のいずれかである必要があります。URL パスとパラメーターが別々に記録されている場合、method フィールドには値が必要で、そのインデックス名は「method」、「http_method」、「request_method」のいずれかである必要があります。
-
POST リクエストをリプレイするには、次の要件を満たす必要があります。
-
HTTP POST ボディフィールドにはインデックスと値が必要で、インデックス名は「body」、「http_body」、「http_request_body」、「request_body」のいずれかである必要があります。
application/x-www-form-urlencoded、text/plain、application/json形式のボディのみがサポートされています。バイナリデータボディはサポートされていません。 -
Content-Typeフィールドにはインデックスと値が必要で、インデックス名は「content_type」または「contentType」である必要があります。それ以外の場合、PTS は自動的にContent-Typeを推測します。 -
MSE gateway を使用する場合、POST リクエストのボディをゲートウェイログに記録できます。詳細については、「アクセスログへの完全なリクエストとレスポンス情報の追加」をご参照ください。PTS は、この方法で記録された POST リクエストを直接リプレイできます。
-
-
シンプルリプレイモードを使用する場合、以下の追加ルールが適用されます。これらのルールを満たさないログは無視されます。
-
ドメイン名フィールドにはインデックスと値が必要で、インデックス名は「host」、「http_host」、「authority」のいずれかである必要があります。
-
HTTP プロトコルフィールドにはインデックスと値が必要です。インデックス名は「http_protocol」、「protocol」、「scheme」、「http_scheme」のいずれかである必要があり、値は
httpまたはhttpsである必要があります。それ以外の場合、デフォルトでhttpが使用されます。
-
前提条件
-
Log Service を有効化し、Project と標準 Logstore を作成し、インデックスとログ収集を設定済みであること。詳細については、「Project の管理」、「標準 Logstore の作成」、および「インデックスの作成」をご参照ください。
-
課金概要を熟知していること。
ステップ 1:アクセスログからのシナリオ作成
-
PTS コンソールにログインします。左側メニューで、[Performance Test] > Create Scenario を選択し、[Access Log] をクリックします。
-
[検索と分析]
アクセスログが保存されている Log Region、[Log Project]、ログストア を選択します。クエリパラメーターと時間範囲を設定し、[Search & Analyze] をクリックしてリプレイするログをクエリします。ログのインデックスは ログ仕様 を満たす必要があります。準拠していないログは無視されます。
@timestamp: 2024-08-29T14:38:39+08:00 body_bytes_sent: 200 bytes_sent: 519 content_type: text/html;charset=UTF-8 host: www.example.com http_referer: http://www.example.com/index.html http_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 remote_addr: xxx request_body: username=user1&password=123456&verifycode=1234 request_length: 963 request_method: POST request_time: 0.002000 request_uri: /login.php scheme: http server_addr: 172.26.150.228 status: 200 upstream_host: unix:/dev/shm/php-cgi.sock upstream_status: 200 upstream_time: 0.003 uri: /login.php
ステップ 2:テストモードの選択
Access Log Test Scenario ページで、[Simple Playback Mode] スイッチをオンにし、Select APIs for Testing をクリックしてシンプルリプレイモードに入ります。標準モードに入るには、[Simple Playback Mode] スイッチをオフにし、Select APIs for Testing をクリックします。
シンプルリプレイモードは、リクエスト構造を解析せずに、ログに記録されたトラフィックを直接リプレイします。異なるドメインや API の数に制限はありませんが、シナリオ全体のリクエスト/秒 (RPS) のみを制御できます。このモードはログイン状態を処理しません。
標準モードでは、ログイン状態を設定し、各 API のリクエスト数と最大 RPS の分布を分析し、各 API の負荷を正確に制御できます。ただし、異なるドメインや API の数には制限があります。
ニーズに応じて、シンプルリプレイモードまたは標準モードのいずれかを選択してトラフィックリプレイを実行できます。両者の比較を次の表に示します。
|
テストモード |
説明 |
|
シンプルリプレイモード |
|
|
標準モード |
|
シンプルリプレイモード
-
再生パラメーターの設定
シンプルリプレイモードの分析結果には、選択した期間内の有効なリクエスト数が表示されます。次のパラメーターを設定できます。
-
POST リクエストのリプレイ:このスイッチをオンにすると、PTS が POST リクエストをリプレイできるようになります。ただし、リクエストボディがアクセスログに含まれていない場合、リプレイされた POST リクエストにはボディがなく、エラーが発生する可能性があります。このオプションは注意して使用してください。
-
リプレイの繰り返し:有効にすると、再生プロセスはログの最後に達した後、ログの先頭に戻ってループします。無効にすると、ログの最後に達したときに負荷生成が停止します。ただし、指定された期間が終了するまでテストは自動的に停止しません。不要な仮想ユーザー分 (VUM) の消費を避けるために、すべてのリクエストが送信された後、手動でテストを停止してください。
-
再生時間 (分):トラフィックリプレイの期間。デフォルトは 10 分です。
-
リクエスト/秒:トラフィックリプレイのレートを設定します。PTS は、このレートでアクセスログのトラフィックをリプレイします。このレートは、各抽象 API に均等に分散されます。シンプルリプレイモードの設定フォームには、[Selected Time Period] (再生の時間範囲を表示)、[Total Valid Requests] (選択した期間内の有効なリクエストと POST リクエストの合計数を表示)、および [Requests per Second] (再生中に毎秒送信されるリクエスト数を設定) のフィールドもあります。
-
-
[Create Scenario]
Create Scenario をクリックします。PTS は再生設定の概要を表示します。確認 をクリックすると、PTS シナリオエディターページにリダイレクトされます。このページで生成されたシナリオをさらに編集することも、ステップ 3:(オプション) PTS シナリオの設定をスキップして、直接 ステップ 4:テストの開始に進むこともできます。
標準モード
ログにリクエストドメイン名が含まれ、フィールド名が host、http_host、または authority の場合、PTS は自動的にホストを入力します。これは変更することもできます。現在、単一のホストのみがサポートされていて、すべての API はこのホストを共有します。複数のドメインのトラフィックをリプレイするには、API ごとに個別のシナリオを作成し、必要に応じて変更してください。
-
[Select APIs for Testing]
[Select APIs for Testing] ダイアログボックスで、ターゲットホストを入力し、プロトコル (例:
http://) を選択します。PTS は、選択した期間のアクセスログから、頻度と RPS でランク付けされた上位 10 件の API を表示します。左側のリストには、各 API のパスと総トラフィックに占める割合が表示されます。右側のリストには、各 API の最大 RPS が表示されます。リストからテスト対象の API を選択します (例:POST /login)。選択した API は Selected エリアに表示されます。 -
テストパラメーターの設定
対象の API がログインを必要としない場合は、No Logon Required スイッチをオンにします。API がログイン状態情報を必要とする場合は、次のようにログイン API を設定します。
a. [Select from APIs]:ログイン API がクエリされた API の中に含まれている場合、このドロップダウンリストから選択できます。PTS は自動的にこれをログイン API として使用し、ログからのパラメーターを適用し、手動設定なしでログイン状態の Cookie をエクスポートします。たとえば、[Select from APIs] ドロップダウンリストから POST /login を選択し、[Logon API RPS] を
1に設定します。b. [Set Logon API]:ログイン API がリストにない場合は、手動で設定できます。ログイン API のアドレス (例:http://example.com/login) を入力します。ログイン API のボディパラメーター (例:username と password) を設定します。${} を使用してパラメーターを参照できます。パラメーターファイルを指定するには、Select Parameter Files をクリックします。詳細については、「データソース」をご参照ください。
-
設定を確認した後、Create Scenario をクリックすると、PTS シナリオエディターページにリダイレクトされます。このページで生成されたシナリオをさらに編集することも、ステップ 3:(オプション) PTS シナリオの設定をスキップして、直接 ステップ 4:テストの開始に進むこともできます。
(オプション) ステップ 3:PTS シナリオの設定
-
使用する Cookie の数を設定するには、データエクスポート をクリックします。[Export Data] 設定パネルで、エクスポートするデータフィールドとして [Cookie] を選択し、[Export Scale] を
100に設定し、必要に応じて [Specify as array parameter] ドロップダウンリストから配列パラメーターを選択します。トークンなど、他のログイン状態情報を使用する必要がある場合は、ログイン API をクリックし、出力パラメーターを設定して、データエクスポートを設定します。詳細については、「データエクスポートの手順」をご参照ください。 -
任意の API をクリックしてヘッダーを追加します。ログイン API の場合、リクエストメソッドは [POST] で、リクエスト URL は
http://example.com/loginです。[Header] タブで、[Content-Type] をapplication/x-www-form-urlencodedに設定します。 -
負荷設定については、「負荷モデル」および「送信元 IP 数の指定」をご参照ください。
ステップ 4:テストの開始
ストレステスト結果の分析
テストが完了すると、PTS は自動的にストレステストデータを収集し、ストレステストレポートを生成します。レポートには次のセクションが含まれます:
シナリオメトリック
ビジネス詳細
モニタリング詳細
API サンプリングログ
詳細については、PTS ストレステストレポートの表示をご参照ください。