w3wp进程的高CPU使用率

时间:2011-08-02 11:26:17

标签: iis cpu cpu-usage w3wp w3wp.exe

我遇到了我的asp.net c#web应用程序的问题,其中服务器正在达到非常高的CPU使用率,例如。 w3wp进程的80%以上。

这是在我对我的应用程序进行了大量更改后才发生的。我很确定这可能是我所做的更改之一是在iis 7 Web服务器上导致此问题的高CPU使用率。

是否有可能分析过程并找出导致这种高用量的确切原因?或者调试此类问题的机制是什么。

2 个答案:

答案 0 :(得分:0)

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

  

高CPU问题通常是三件事之一

     
      
  • 无限循环
  •   
  • 太多的负载(即请求做很多小事的请求太多,所以   没有一件事是罪魁祸首)
  •   
  • 垃圾收集器中搅拌太多。
  •   

尝试监控%GC时间计数器和.NET CLR内存/ #Gen 0集合,#Gen 1集合和#Gen 2集合。

您是否在代码中的任何位置调用了GC.Collect()

您所描述的问题也是High CPU in .NET app using a static Generic.Dictionary的症状,由多个线程击中字典引起。如果那就是问题:

  

要解决此时间问题,您应该特别注意   如果存在,则同步(锁定)对字典的访问   你可能有多个作家同时工作的可能性   时间或者如果有可能你在别人的时候写作   通过相同的字典阅读/枚举。

相关:ASP.NET Performance Monitoring, and When to Alert Administrators

答案 1 :(得分:0)

最快的方法是enable Page Tracing。这将告诉您页面生成的确切时间,以及服务器花费大部分时间的方法。这应该突出显示任何特别慢的运行方法,使您可以将疑难解答集中在有问题的部分。

只需将以下内容添加到您怀疑有问题的任何页面中:

<%@ Page Trace="true" %>

现在,当您在浏览器中导航到该页面时,您将在其底部获得详细的跟踪。