
ウェブとデータベースのホスティングを新しいマシン上の新しい環境に移行しています。最近、次のものを使用して負荷テストを実行しました。ワップ複数の分散クライアントからの負荷を生成します。サーバーにはトラフィック負荷を処理するのに十分な余裕がありますが、負荷テスト中に着信トラフィックのパターンが奇妙に見えます。
私たちのセットアップの要点は次のとおりです。
- Win 2k8 サーバー上で MS Forefront TMG 2010 を実行するファイアウォール サーバー
- ファイアウォールマシン上の IIS アプリケーション要求ルーティングによって実行される要求ルーティング
- Web サーバーは、データベース サーバー (ホスト OS) 上の Hyper-V VM です。
- これらのマシンは、6つのコア(合計12個のプロセッサ)を備えたデュアルCPUを搭載しています。
- IIS 7.5 を実行している Web サーバー
- ASP.NET 2.0で構築されたWebアプリケーション。1つのISAPIフィルタ(URL書き換え)が前面に配置されている。
負荷テスト中に確認したところ、リクエストはすべてバーストで到着しています。トラフィック負荷を送信する 7 つの異なる分散クライアントがあるにもかかわらず、リクエストは一度に約 300 ~ 500 件到着します。
パフォーマンス モニターでは、ほぼすべてのカウンターがこのパターンで推移していることがわかります。つまり、リクエストのバーストが発生すると、リクエスト/秒が 70 に跳ね上がり、キューに入れられたリクエストが 500 に跳ね上がり、現在のリクエストが跳ね上がり、CPU 使用率が跳ね上がり、すべてが急上昇します。その後、そのリクエスト グループの処理が完了すると、ほぼ 10 秒間、ほとんど何も起こらない状態になります。リクエスト/秒は 0 ~ 5、キューに入れられたリクエストは 0、CPU 使用率は最小限です。その後、10 秒間の非アクティブ状態の後、別のバーストが発生し、すべてのカウンターが再び急上昇します。
私が理解できないのは、生成される負荷がそのように送信されないことはわかっているのに、なぜ要求がバーストで送信されるのかということです。特に、さまざまな負荷生成クライアントが、各要求間の思考時間をランダムにして、さまざまな間隔でトラフィックを送信していることを考えるとなおさらです。Hyper-V 間のレイヤーまたはハードウェアに、要求がこのように結合する原因となる何かがあるのでしょうか。
私が見ているのは次のものです。強調表示されているメトリックはリクエスト/秒ですが、他の重要なカウンターもそれに合わせて変化します: キューに入れられたリクエスト (これは当然、できるだけ 0 に近づけたい)。
これについて何かアイデアはありますか?
答え1
さらにテストと調査を重ねた結果、この問題は WAPT 負荷テスト ツールのせいであることが判明しました。いくつかの設定を微調整すると、このパターンが変わりました。
WAPT インスタンスを設定し、Web サーバーと負荷を生成しているマシンの両方でパフォーマンス モニターを使用したところ、これが WAPT テスト ツールの結果であることが確認できました。ネットワーク インターフェイスで送信されるパケットが、Web サーバーでのリクエスト/秒と同じ間隔と時間に急増しているのを見ると、簡単に相関関係がわかります。