1

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

但是分析只在“Top 1 thread in high CPU usage”中显示了这个调用堆栈:

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 网站,我可以做的下一个最好的事情是找出这里的问题。一些指针将不胜感激。

4

1 回答 1

2

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

当 w3wp 卡在 50% 时,转到 w3wp 的属性,查看“线程”选项卡,发现一个线程消耗接近 45% 的 CPU 并查看其堆栈信息。这就是我的代码中的加密字符串算法!:)

通过使用 dotTrace 试用版验证了这一点,该试用版提供了相同的信息,但更易于阅读。

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

于 2014-07-22T08:04:51.453 回答