HAProxyの背後にある3台のサーバーでAsp.Net WebApiを実行しています。HAProxy は、これら 3 つのインスタンス間でリクエストを単純にランダムに分散します。
これらのインスタンスは、mongodb、redis、および一部の Windows サービスに接続します。
通常、w3wp.exe は各 API サーバーで約 30% の CPU を使用します。
ときどき (1 時間に数回) API サーバーの 1 つが大量の CPU を使用することを決定します。この動作と相関して、応答時間の増加が見られ始めます。HAProxy が 10000 ミリ秒の応答時間を確認し、要求を他の 2 つのサーバーにルーティングすることを決定するまで、数値は上昇し続けます。これらはすべて 10 ~ 20 秒で発生します。しばらくすると、このサーバーは通常の状態に戻り、リクエストの処理を再開します。数分後、別のサーバーがまったく同じことを行います。これは延々と続く。
New Relic を使用していますが、アプリケーションは WebApi アプリケーションであるため、有用な情報は得られません。すべてのサーバー (redis、mongo、および Windows サービス) の CPU 使用率、メモリ使用率、ネットワーク トラフィック、および I/O を監視していますが、前述の停止中に大きな負荷は見られません。
このアプリケーションの動作の背後にある原因をどのように検出できますか?