ASP.Net IIS7获取每个请求的CPU使用率

Rob*_*Day 5 asp.net performance logging iis-7

我有一个在生产服务器上运行的asp.net应用程序.

服务器上的CPU使用率非常高,为80-90%.

但是,除非cpu达到100%的峰值,否则每个请求似乎都不会花费太长时间.

我需要获取一些分析数据,以确定高CPU使用率是由于少量的高CPU请求,还是,如果它只是一般的高负载.

我可以在机器上添加更多核心,也可以在应用程序中添加web,但我需要证据才能证明任何成本以及未来的性能证明.

有没有办法记录每个页面请求的CPU使用情况?

Vad*_*zit 6

实际上,您无法使用计数器直接确定各个请求的CPU利用率.ASP.NET请求由工作进程处理,其负载分布在所有可用的CPU核心上.您可以测量每个核心或每个进程的CPU利用率,但不能按照请求进行测量.

您可以使用IIS7高级日志记录间接隔离CPU饥饿请求.你可以从这里下载.阅读此博客,了解如何启用自定义日志记录.您需要在日志定义中添加"CPU利用率"字段.新的IIS日志文件将显示每个请求行的CPU利用率.然而,这并不是真正的CPU利用率请求处理,而仅仅是CPU利用率期间请求处理.您仍然可以使用此信息来确定可能会占用大量CPU的可疑请求.

通过负载测试进一步单独测试这些请求,看看它们是否在合理负载下产生过多的CPU使用率.Microsoft负载测试工具包含在VSTS 2010 Ultimate Edition或VSTS 2008 Test Edition或Team Suite中.或者,您可以使用WCAT - 一个免费的Microsoft命令行HTTP负载生成器.此外,我们为负载测试开发了一个名为StresStimulus的免费Fiddler扩展,可以使用各种负载模式和图形性能指标重放Fiddler会话.

在生产中小心运行负载测试.您可以在理想的负载下运行每个请求几秒钟.如果您无法找到未经优化的页面,请使用此因子来证明硬件升级的合理性.