StackOverflowからのX-Post:
https://stackoverflow.com/questions/9465123/intermittent-high-cpu-100-on-production-webserver
それぞれ24コアと24GBメモリを持つ3つのWebサーバーを持つWebクラスターがあります。
私たちのアプリケーションは、パッチが適用された最新のASP.NET 4.0で、MVC3を使用してIIS 7.5-独自のアプリケーションプールにあります。
非常に断続的に(多分2/3日に1回)、Webサーバーの1つが要求の処理を停止し、24コアすべてが100%のCPUを表示します(メモリとディスクは正常に見えます)。
IIS=マネージャーが完全に凍結されていない場合、アクティブな実行中のリクエストが有用な情報を提供していないように思われますが、多数のサイト領域/リクエストにかなりランダムに分散しています。
サーバーが停止すると、サーバーの負荷を取り除くことができます-おそらく5分間の要求に対応しなくなった後、CPUアクティビティは通常に戻ります-無限ループではないと考えさせます。
ワーカープロセスのメモリダンプ(サイズは約4GBです!)には、マネージドスタックトレースのどこにもコード/名前空間が表示されないようですが、.Netがリクエストを開始するだけです(WinDbgを使用している可能性があります)間違っています-シンボルを正しくロードしていません-しかし、スタックトレースには、欠落した/名前のないメソッド呼び出しは表示されません-したがって、私はかなり混乱しています)
私たちのサーバーは通常1000リクエスト/秒を非常に喜んで処理しているので、これはすべて非常に奇妙です。
Perfmonで気付いた奇妙な点の1つは、競合率/秒が800のようになることです。アプリには、派手なマルチスレッドコードがありません。また、キャッシュコードにある唯一のロック(これは、年齢の変化)。
この問題をさらに診断する方法についてのアドバイス/ヒントをいただければ幸いです。
乾杯。
デイブ、あなたを始めるためのいくつかの考え:
リソースを消費しているのはw3wp.exeだと思います。そうでない場合は、いくつかのPALレポートを実行して、サーバーの全体的な状態を詳しく把握することをお勧めします。 http://pal.codeplex.com/ 場合によっては、PALを実行することさえあります。 IIS問題... PALは、あなたが考えたこともないようなあらゆる種類の問題を見つけることができます。
パフォーマンスモニターをチェックします(スパイクの前と最中の両方)... ASP.Netアプリケーションリクエスト/秒が「応答が遅い」期間の方が高いかどうかを調べてみてください...それが最も速い方法だとわかります通常よりも多くのリクエストを処理する場合。
読み込みに時間がかかるページが1つ(またはいくつか)あるかどうかを調べます。 IIS統計がログに記録されていることを確認してから、所要時間の増加を探してください。チェックアウトログアナライザ( http://www.iis.net/community/default .aspx?tabid = 34&g = 6&i = 1864 )。
問題の原因となっているURLを特定したら、StackExchangeミニプロファイラー http://code.google.com/p/mvc-mini-profiler/ を忘れないでください。
また、あなたが持っている.NETエラーキャッチを見逃さないでください:-)
何が見えるか教えてください。 -クリス
DebugDiag 1.2を使用して、ダンプの分析を実行します。
https://www.Microsoft.com/download/en/details.aspx?id=26798
複数のスレッドを使用できるプロセスは、サーバーのすべてのプロセッサで使用率を100%にプッシュできることに注意してください。これには、ネイティブコードやコアOSコンポーネントも含まれます。
あなたが「最新のパッチ」と言うとき、私にとってそれはWindows Updateを意味します。これはWindows 2008 R2のより深刻なバグ修正の多くを取得していません。
特に、アプリケーションがリモート共有上のファイルにアクセスしている場合は、ファイルシステムの修正プログラムを適用することをお勧めします。
Windows Server 2008およびWindows Server 2008 R2のファイルサービステクノロジで現在利用可能な修正プログラムのリスト
http://support.Microsoft.com/kb/2473205
HashDos攻撃のターゲットになっていないかどうかを確認し、リクエスト制限を設定します。