2011-08-02 3 views
1

私のasp.net c#Webアプリケーションで、サーバーが非常に高いCPU使用率に達する問題が発生しました。 w3wpプロセスで80%+。w3wpのプロセスで高いCPU使用

これは、アプリケーションに多数の変更を加えた後で、最近になって起こっています。私はそれがiis 7ウェブサーバー上の高いCPU使用率でこの問題の原因となっているという変化の1つかもしれないと確信しています。

プロセスを分析して、この高い使用率を正確に引き起こしているものを見つけることは可能ですか?または、そのような問題をデバッグするためのメカニズムは何ですか。

答えて

0

ASP.NET Case Study: High CPU in GC - Large objects and high allocation rates

高いCPUの問題は、一般的に3つの事

  • 無限ループ
  • あまりにも多くの負荷(小さなものをたくさんやっすなわち、あまりにも多くのリクエストなので、 の一つであります誰も一つのことが原因ではない)
  • ガベージコレクタで過度に乱れている。

GCカウンタおよび.NET CLRメモリ/#ゲン0コレクション、#ゲン1つのコレクションと#のGen 2コレクションに%の時間を監視してください。

コード内の任意の場所にGC.Collect()を呼び出していますか?

説明している問題は、複数のスレッドが辞書にぶつかったことにより、症状がHigh CPU in .NET app using a static Generic.Dictionaryになることがあります。それが問題だ場合:

このタイミングの問題を解決するには、あなたが同じ 時に動作する複数の作家を有していてもよく 可能性がある場合は、辞書へのアクセスの周り 同期(ロック)に特別な注意を払う必要がありますまたは他の誰かが同じ辞書を通して読む/列挙している間にあなたが書く可能性がある場合。

関連:ASP.NET Performance Monitoring, and When to Alert Administrators

0

最も簡単な方法は、enable Page Tracingにあります。これは、ページの生成に要した時間と、サーバーがほとんどの時間を費やした方法を正確に示します。これは、問題のあるセクションにトラブルシューティングを集中させることができる、特に遅い方法を強調する必要があります。

は、単にあなたが面倒であることの疑いがある任意のページに次の行を追加します。ブラウザでそのページに移動したときに

<%@ Page Trace="true" %> 

今、あなたはそれの一番下に詳細なトレースを取得します。