我遇到了asp.net c# web应用程序的问题,服务器的cpu使用率非常高。w3wp进程上的80%+。
最近,在我对应用程序进行了多次更改后,才发生了这种情况。我非常确定,这可能是我所做的更改之一,导致了iis 7 web服务器上的高cpu使用率问题。
有没有可能对流程进行分析,找出导致这种高使用率的确切原因?或者调试这样一个问题的机制是什么。
发布于 2011-08-02 19:32:27
ASP.NET Case Study: High CPU in GC - Large objects and high allocation rates
高CPU问题通常是以下三种情况之一
尝试监视GC计数器中的% Time和.NET Memory /# 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
发布于 2011-08-02 19:34:20
最快的方法是enable Page Tracing。这将确切地告诉您生成页面所用的时间,以及服务器将大部分时间花在哪些方法上。这将突出显示任何运行速度特别慢的方法,使您能够将故障排除集中在有问题的部分上。
只需将以下内容添加到任何您怀疑是麻烦的页面:
<%@ Page Trace="true" %>
现在,当您在浏览器中导航到该页面时,您将在其底部获得详细的跟踪信息。
https://stackoverflow.com/questions/6911273
复制相似问题