イントラネットでカスタムアプリケーションを実行していますが、最近アップグレードした後、IISが100%のCPU使用率でハングし、リセットが必要になるという問題が見つかりました。
ユーザーをハングアップさせるのではなく、解決策を決定する間、以前のリリースにロールバックしました。最初のステップは問題を再現することですが、再現することはできません。
ここにいくつかの背景があります:
Prodには、2つのCPUと2 GBのRAMを備えた単一の仮想化(vmware)Webサーバーがあります。データベースサーバーには4GBがあり、CPUも2つあります。これもVMWareにありますが、物理ハードウェアは別です。
通常の使用中、アプリケーションは正常に実行されます。w3wp.exeプロセスは通常、5〜20%のCPUと約200MBのRAMを使用します。CPUとRAMは通常の使用ではわずかに変動しますが、異常なことは何もありません。
ただし、問題が発生し始めると、RAMは劇的に上昇し、CPUは98%(または可能な限り)にペグします。サイトが応答しなくなり、IISを再起動する必要があります。この状況では、アプリプールをリセットしても何も起こりません。完全な、IISの再起動が必要です。
夜間は発生しません(使用なし)。サイトに負荷がかかっている場合に多く発生しますが、ピーク時以外の場合にも発生します。
この問題を解決するための最初のステップは、それを再現することです。負荷をシミュレートするために、JMeterを使用して使用状況をシミュレートし始めます。ロードスクリプトは、クラッシュ時の実際の使用量に基づいています。JMeterを使用すると、使用量をかなり高くすることができます(クラッシュ時の負荷の2〜3倍)が、サイトは正常に動作します。CPUが高く、サイトが遅くなりますが、メモリ使用量は合理的で、何もハングしていません。
非本番環境でこのような問題を再現するためのヒントはありますか?エラーを再現し、解決策を決定してから、もう一度テストして解決したことを確認したいと思います。その過程で、問題を解決する可能性のある改善された小さな点がいくつか見つかりましたが、問題を再現して改善されたバージョンをテストできれば、私は本当に自信が持てるようになります。
どんなツール、テクニック、理論も大歓迎です!