【问题标题】:ASP.Net IIS7 Obtaining CPU usage per requestASP.Net IIS7 获取每个请求的 CPU 使用率
【发布时间】:2011-02-17 12:25:04
【问题描述】:

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

服务器的cpu使用率很高,80-90%。

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

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

我可以为机器添加更多内核,也可以为应用添加网络农场,但我需要证据来证明任何成本的合理性并在未来证明性能。

有没有办法将每个页面请求的 CPU 使用情况记录到文件中?

【问题讨论】:

    标签: asp.net performance logging iis-7


    【解决方案1】:

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

    您可以使用 IIS7 高级日志记录间接隔离 CPU 密集型请求。您可以从here 下载它。阅读this blog 了解如何启用自定义日志记录。您需要在日志定义中添加“CPU 利用率”字段。新的 IIS 日志文件将显示每个请求行的 CPU 利用率。然而,这并不是 请求处理的实际 CPU 利用率,而只是 请求处理期间的 CPU 利用率。您仍然可以使用此信息来确定可能占用大量 CPU 的可疑请求。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      相关资源
      最近更新 更多