4

私は、1日に約54kのリクエストを取得するasp.net mvc4 Web APIインターフェースを持っています。

http://myserv.x.com/api/123/getstuff?whatstuff=thisstuff

http 要求を処理するようにセットアップされたロード バランサーの背後に 3 つの Web サーバーがあります。

平均応答時間は約 300 ミリ秒です。ただし、最近、応答時間が 10 ~ 20 秒で戻ってくるという散発的な動作があるため、何かがおかしくなっています (または、常にそこにあった可能性があります)。これは、ロード バランサーを介するのではなく、同じサーバーに直接ヒットする同じリクエストの場合です。

GIVEN:
- System has been passed down to me so there may be gaps with IIS confiuration, etc,.
- Database: SQL Server 2008R2
- Web Servers: Windows Server 2008R2 Enterprise SP1
- IIS 7.5
- Using MemoryCache aggressively with Model and Business Objects with eviction set to 2hrs
- Looked at the logs but really don't see anything significantly relevant
- One application pool...no other LOB applications running on this server

前提と質問: 何かがアプリケーション プールをリサイクルしているか、IIS ワーカー スレッドがシャットダウンして再起動しているため、新しい要求がウォームアップされ、それ自体が再キャッシュされているのではないかと考えています。非常に散発的であるため、今すぐトラブルシューティングを行うのは困難です。同じサーバーへの同じリクエストは、約 300 ミリ秒でキャッシュされたため、期待どおりに高速に返されます (連続 N リクエスト)。

これらは製品システムであるため、トレースを制限しているため、公開できるログの詳細は限られています。これまたは他の誰かが遭遇した同様の動作を攻撃するためのヘルプと情報をいただければ幸いです。どうも

更新: w3wpe.exe プロセスは最大 3G まで成長します。どういうわけかそれが一掃され、PIDが変更されるため、それ自体または何かが3〜4分ごとにそれを殺しています Webサーバー(IIS)ログに大量の警告が表示されます:

アプリケーション プール 'MyApplication' を提供するプロセスで、Windows プロセス アクティベーション サービスとの致命的な通信エラーが発生しました。プロセス ID は「1732」でした。データ フィールドにはエラー番号が含まれます。

4

1 に答える 1

4

IISと構成と内部コードの問題を4〜5日間評価した後、windbgまたはdebugdiagIISツールの助けがほとんどまたはまったくない問題を最終的に見つけました。これらのツールには、ミニダンプやログトレーススタックを使用した場合でも、非常に多くの情報が含まれているため、赤ニシンになる可能性があります。最善の策は、本番システムの「インテリジェントにコピー」するインスタンスをセットアップすることによってそれを再現することでした。これは、当時はありませんでしたが、opsが何かをセットアップするのに少し時間がかかりました。

言うまでもなく、問題はビジネスオブジェクトの過剰キャッシュに関係していました。特定のテーブルの更新が対応するビジネスオブジェクトの属性を更新している(更新は複数のサーバーから行われている)という競合状態が1つあり、OOCスタックオーバーフローが発生し、キャッシュが再帰的にキャッシュされて停止し、w3wpが発生していました。 .exeプロセスを終了し、疑似リサイクルします。これは、非実稼働環境でのテストと再現が非常に困難なエッジケースの1つでした。

于 2013-03-01T05:10:03.677 に答える