w3wp CPU使用率停留在50%,调试诊断中的调用堆栈信息无用

时间:2014-07-21 21:08:22

标签: asp.net iis-7.5 w3wp

我发现我的应用池的w3wp进程的CPU使用率太高了。 使用调试诊断工具搜索并找到与转储和分析相关的文章。

但是分析只显示了高CPU占用率的前1个线程中的调用堆栈":

  

System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr的,   System.Web.RequestNotificationStatus ByRef)   System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr的,   System.Web.RequestNotificationStatus ByRef)

一旦我重新启动应用程序池,CPU使用率就会恢复正常。在网站上测试了不同的东西几个小时之后,我发现CPU使用率已回到50%。我不确定哪种情况会导致此行为。

该应用是在Windows Server 2008 R2,IIS 7上运行的.NET 4 Razor网站 什么是我能做的最好的事情来确定这里的问题。 很少有人会赞赏。

1 个答案:

答案 0 :(得分:2)

我最终使用Process Explorer获得了一些有意义的信息。

当它停留在50%时,我们去了w3wp的属性,看着"线程"选项卡,发现一个线程消耗了接近45%的CPU并查看了它的堆栈信息。它就是我的代码中的加密字符串算法! :)

使用dotTrace试用版验证了这一点,该版本提供了相同的信息,尽管它更易于阅读。

我将更改加密算法并监控CPU峰值2天,以确保。