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



我遇到了一个使用ASP.Net/C#开发的网站的问题,有时会无限期占用所有CPU使用量(100%)。你有什么想法/技巧可以解决造成这种资源浪费的原因吗?该网站仍在响应,因此没有崩溃或类似情况。

我有点不知道从哪里开始!

谢谢!

开始在服务器上使用性能计数器。添加Garbage Collection、Threads usage的计数器,并查看到底是哪个线程在消耗CPU。

另外,看看这个:

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

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

我在过去也遇到过同样的问题。我主要有HTML rendering的问题,速度很慢。我通过在page指令中设置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中。原因是,当异常发生时,它会直接返回到调用函数。那么为什么要在每层中写入Try Catch块,从而写入stopping the execution

最好、最简单的起点是使用性能分析器。只要运行它,如果运气好的话,你会在几分钟内解决问题。

试试dotTrace,它很好。如果你按照链接,有10天的免费试用和视频教程。

相关内容

最新更新