問題
セキュリティ上の理由から、アプリケーションがパブリックインターネットに公開されていない場合や、Alibaba Cloud の Web Application Firewall (WAF) によって保護されている場合があります。このような場合、大量のストレステストトラフィックがセキュリティ対策をトリガーし、インターセプト、ブロック、スクラビングなどの処理が行われ、WAF が Performance Testing Service (PTS) からのトラフィックをブロックする可能性があります。
解決策
解決策 1:WAF ヘッダーホワイトリストの設定
テスト対象のアプリケーションが WAF を使用している場合、リクエストヘッダーを使用して Web サイトホワイトリストルールを設定することで、PTS からのストレステストトラフィックを通過させることができます。以下の手順に従ってください。
WAF 3.0コンソールにログインします。 上部のナビゲーションバーで、WAFインスタンスがデプロイされているリソースグループとリージョンを選択します。 中国本土または中国本土以外を選択します。
左側メニューで、[Protection Settings] > [Core Web Protection] の順に選択します。
Web サイトホワイトリストの左側にある
アイコンをクリックし、[Actions] 列の [New Rule] をクリックします。表示されるダイアログボックスで、新しい Web サイトホワイトリストルールを作成し、一致条件をヘッダー x-pts-testが存在することに設定します。
PTS から送信される HTTP リクエストには x-pts-test ヘッダーが含まれているため、新しい Web サイトホワイトリストルールを作成し、その一致条件を x-pts-test ヘッダーが存在することに設定する必要があります。Web サイトホワイトリストの設定の詳細については、「Web サイトホワイトリストの設定」をご参照ください。
解決策 2:IP ホワイトリストの設定
セキュリティポリシーで、ロードジェネレーターの IP を IP ホワイトリストに追加することもできます。ただし、ストレステストの IP は固定されていないことに注意してください。この解決策では、テストごとに IP ホワイトリストを再設定する必要があります。解決策 1 の使用を推奨します。以下の手順では、ロードジェネレーターの IP を取得する方法について説明します。
直接パフォーマンステストを開始し、テスト開始後に負荷ジェネレーターの IP アドレスを取得します。既存のシナリオがある場合は、コンソールの左側のナビゲーションバーで を選択します。次に、Scenarios ページで、対象のシナリオの Actions 列にある Start をクリックしてパフォーマンステストを開始します。
パフォーマンス テストが開始されると、In Progress ページで負荷ジェネレーター IP を直接表示できます。
共有リソースプールを使用している場合、テストの開始前にロードジェネレーターの IP を取得することはできません。トラフィックが生成される前にホワイトリストを設定するための時間を確保するには、シナリオに起動待機時間を追加します。待機時間は、ホワイトリストの設定に必要な時間に基づいて設定してください。この待機期間は VUM を消費します。以下の手順では、PTS テストと JMeter テストで起動待機時間を設定する方法について説明します。
PTS テストでの起動待機時間の設定
各業務セッションに遅延解放命令を追加してください。遅延時間は、ホワイトリストの設定に必要な時間に基づいて設定してください。遅延解放命令の追加の詳細については、「遅延解放命令の使用」をご参照ください。
JMeter テストでの起動待機時間の設定
JMeter テスト計画で右クリックし、[Test Plan] > [Add] > [Threads (Users)] > [setUp Thread Group] の順に選択します。

[setUp Thread Group] パネルで、[Specify Thread lifetime] チェックボックスをオンにし、起動遅延を必要な待機時間に設定します (次の図を参照)。
