w3wp 进程的 CPU 使用率高

Posted

技术标签:

【中文标题】w3wp 进程的 CPU 使用率高【英文标题】:high cpu useage on w3wp process 【发布时间】:2011-08-02 11:26:16 【问题描述】:

我在我的 asp.net c# web 应用程序中遇到了一个问题,其中服务器的 cpu 使用率非常高,例如。 w3wp 进程超过 80%。

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

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

【问题讨论】:

【参考方案1】:

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

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

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

尝试监视 % Time in GC 计数器和 .NET CLR 内存/# Gen 0 Collections、# Gen 1 Collections 和 # Gen 2 Collections。

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

您描述的问题听起来也是High CPU in .NET app using a static Generic.Dictionary 的症状,是由多个线程访问字典引起的。如果是这个问题:

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

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

【讨论】:

【参考方案2】:

最快的方法是enable Page Tracing。这将准确地告诉您生成页面需要多长时间,以及服务器在哪些方法中花费了大部分时间。这应该突出显示任何运行速度特别慢的方法,使您可以将故障排除集中在有问题的部分。

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

<%@ Page Trace="true" %>

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

【讨论】:

以上是关于w3wp 进程的 CPU 使用率高的主要内容,如果未能解决你的问题,请参考以下文章

w3wp.exe 和页面错误

IIS解决CPU和内存占用率过高的问题

分析案例:应用服务器W3WP进程CPU持续超过百分之九十(Oracle客户端Bug)

python监听windows上w3wp进程,如果cpu>=95%则自动kill掉

如何确定哪个 w3wp.exe 进程属于哪个网站?

解决w3wp.exe占用CPU和内存问题