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