诊断asp.net网站/应用程序池的性能

我对使用ASP.Net/C#开发的网站存在问题,有时会无限期地占用所有CPU使用率(100%)。 你有什么想法/提示怎么会导致这样的资源匮乏? 该网站仍在响应,因此它没有崩溃或类似的东西。

我有点无能为力从哪里开始!

谢谢!

DebugDiag是一个很好的起点: http : //www.microsoft.com/download/en/details.aspx?id = 26788

开始在服务器上使用性​​能计数器。 添加垃圾收集,线程使用的计数器,并确切地查看正在消耗CPU的线程。

另外,看看这个:

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

我在过去有同样的问题。 我主要是HTML rendering问题很慢。 我通过在页面指令中设置Trace = true来解决它,并找出了花费时间的事件。

另一个问题是Memory Management 。 我正在使用Image Classes并没有正确Dispose它们。 为此,我开始使用Dispose()方法,我可以在架构中使用Using语句。

 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 。 原因是,当发生exception时,它会直接返回到调用函数。 那么为什么要编写Try Catch块,从而stopping the execution每层stopping the execution

最好和最简单的出发点是使用性能分析器。 只需运行它,运气好的话,你会在几分钟内解决问题。

试试dotTrace ,这是一个非常好的。 如果您按照链接,有10天免费试用和video教程。