2011-08-02 130 views
1

我遇到了一個問題,與我的asp.net c#web應用程序,其中服務器正在打擊非常高的CPU使用率,例如。在w3wp過程中達到80%以上。w3wp進程的高CPU使用率

這只是在我對應用程序進行了大量更改後才發生。我相當肯定,這可能是我所做的一個改變,導致這個問題在iis 7 web服務器上的CPU使用率很高。

是否有可能分析過程並找出究竟是什麼導致了這種高用量?或者調試這種問題的機制是什麼。

回答

0

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

高CPU的問題一般是3件事

  • 無限循環
  • 太多的負載(即太多的要求做很多的小事情,所以 一個沒有任何一件事是罪魁禍首)
  • 在垃圾收集器攪拌太多。

嘗試監視%時間GC計數器和.NET CLR內存/#0代集合,#1代類別和#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" %> 

現在,當您在瀏覽器導航到該頁面,你會在它的底部得到了詳細的跟蹤。