1

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

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

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

4

2 回答 2

0

ASP.NET 案例研究:GC 中的高 CPU - 大对象和高分配率

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

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

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

GC.Collect()在代码中的任何地方调用吗?

您描述的问题也听起来是.NET 应用程序中使用静态 Generic.Dictionary 的高 CPU 的症状,这是由多个线程访问字典引起的。如果这是问题所在:

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

相关:ASP.NET 性能监控,以及何时提醒管理员

于 2011-08-02T11:32:26.513 回答
0

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

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

<%@ Page Trace="true" %>

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

于 2011-08-02T11:34:20.457 回答