w3wp.exe
显示 CPU 使用率为 99%。调查此高 CPU 使用率的原因的最佳方法是什么?
答案1
连接 WinDbg + sos 并运行!runaway
。这将显示哪个线程占用了最多的 CPU 时间。对!clrstack
线程执行 以找出它在做什么。
答案2
其他建议使用的工具是 DebugDiag,查看更多这里
[更新] 使用进程转储, 更多信息请访问使用 ProcDump.exe 监控 w3wp.exe 的 CPU 峰值。
答案3
w3wp.exe
是 ASP.NET 工作进程,因此如果它占用了服务器 CPU 的很大一部分,则问题出在 ASP.NET 应用程序上。然而,这不必要表示 ASP.NET 应用程序存在问题。它可能在有限的资源下处理过多的请求。唯一真正的衡量标准是检查 CPU 使用率与应用程序处理的流量量。
如果你怀疑某个请求耗时太长,你可以使用日志解析器命令行实用程序来分析您的日志文件并找出哪个页面的执行时间较长。
c:\>logparser "select top 10 cs-uri-stem, time-taken from INSERT_YOUR_IIS_LOG_FILE_NAME.log group by cs-uri-stem order by time-taken desc" -q:on
您还可以使用工具来显示当前正在执行的页面,例如互联网信息查询(不免费)。
如果你想深入了解,请尝试了解如何使用 WinDbg。这里有一个很好的教程:Windows 调试器:第 1 部分:WinDbg 教程
答案4
我们遇到了 Greg 上面提到的相同问题。我们只是终止了这些进程。在 IIS6/windows server 2003 上没有观察到这种情况,仅在 IIS7/windows server 2008 上观察到了这种情况。