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

时间:2012-03-30 08:59:39

标签: c# asp.net performance iis application-pool

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

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

谢谢!

4 个答案:

答案 0 :(得分:1)

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

另外,请查看:

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

答案 1 :(得分:0)

答案 2 :(得分:0)

我在过去遇到了同样的问题。我主要遇到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。原因是,当发生异常时,它会直接返回到调用函数。那么为什么要在每个层中编写Try Catch块并因此stopping the execution

答案 3 :(得分:0)

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

试试dotTrace,这是一个非常好的。如果您点击该链接,则有10天免费试用和视频教程。