2012-03-30 55 views
2

我遇到了使用ASP.Net/C#開發的網站的問題,有時無限期地使用所有CPU使用率(100%)。你有什麼想法/提示如何去解決可能會導致這樣的資源豬?該網站仍在響應,所以它不會崩潰或類似的東西。診斷asp.net網站/應用程序池的性能

我有點無知從哪裏開始!

謝謝!

+0

問題僅在特定頁面中? – Pankaj 2012-03-30 10:29:51

回答

1

開始使用服務器上的性能計數器。爲垃圾收集,線程使用情況添加計數器,並準確查看哪個線程在使用CPU。

而且,看看這個:

http://weblogs.asp.net/jgalloway/archive/2009/04/09/troubleshooting-an-intermittent-net-high-cpu-problem.aspx

+0

對不起,但我在國外 - 我在哪裏可以找到'線程使用'性能計數器?這是一個活動的服務器,它沒有安裝Visual Studio副本。理想情況下,我可以抽樣說4個小時的時間,並查看哪些線程對CPU使用率有貢獻。理想情況下,我會在某個時間點知道調用堆棧,因爲這對診斷問題會有很大的幫助。有任何想法嗎? – 2012-04-09 13:44:45

0

我在過去有一個同樣的問題。我主要遇到HTML rendering問題很慢。 我通過在頁面指令中設置Trace = true解決了這個問題,並找出了需要花費時間的事件。

另一個問題是Memory Management。我正在使用Image Classes,並沒有正確地使用Dispose。爲此,我開始使用Dispose()方法,並且我可以在架構中使用語句。

using (SqlConnection con = new SqlConnection("Connection String")) 
{ 
    using (SqlCommand cmd = new SqlCommand()) 
    { 
     using (SqlDataReader DR = cmd.ExecuteReader()) 
     { 

     } 
     using (DataTable DT = new DataTable()) 
     { 
     } 
    } 
} 

我想你可能有任何頁面,你可能會提取過多的記錄。您可以開始使用Paging

最重要的一點是Exception HandlingTry Catch塊不應該在每一層。它應該只在Presentation Layer。原因是,當發生異常時,它會直接返回到調用函數。那麼爲什麼要寫Try Catch塊,並因此在每一層stopping the execution

0

最好的和最簡單的出發點是使用性能分析器。只要運行它,運氣好點就會在幾分鐘內解決問題。

嘗試dotTrace,這是一個很好的。如果你按照鏈接,有10天的免費試用和視頻教程。