在 IIS6 上运行的 ASP.NET Web 应用程序会定期使 CPU 达到 100%。在这些事件中,几乎所有的 CPU 使用情况都是由 W3WP 负责的。 CPU 在几分钟到一个多小时的任何时间都保持在 100%。
这是在临时服务器上,此时该站点仅从测试人员那里获得了很少的流量。
我们已经在服务器上运行了 ANTS profiler,但效果并不理想。
我们可以从哪里开始找出导致这些事件的原因以及哪些代码在这段时间内使 CPU 保持忙碌?
- 标准 Windows 性能计数器(查找其他相关活动,例如许多 GET 请求、过多的网络或磁盘 I/O 等);您可以从代码以及 perfmon 中读取它们(例如,如果 CPU 使用率超过阈值,则触发数据收集)
- 自定义性能计数器(特别是离机请求和执行时间不确定的其他调用的时间)
- 使用 Visual Studio Team Test 或 WCAT 等工具进行负载测试
- 如果您可以在 IIS 7 上进行测试或升级到 IIS 7,则可以配置失败请求跟踪,以便在请求花费超过一定时间时生成跟踪
- 使用 logparser 查看哪些请求在 CPU 峰值时到达
- 代码审查/演练(特别是查找可能无法正确终止的循环,例如发生错误,以及锁定和潜在的线程问题,例如静态的使用)
- CPU 和内存分析(在生产系统上可能很困难)
- 流程浏览器
- Windows资源监视器
- 详细的错误记录
- 自定义跟踪日志记录,包括执行时间详细信息(可能是有条件的,基于 CPU 使用性能计数器)
- AppPool回收时是否出现错误?如果是这样,这可能是一个线索。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)