【问题标题】:Measuring CPU load for specific IIS websites on same server测量同一服务器上特定 IIS 网站的 CPU 负载
【发布时间】:2009-01-14 10:13:43
【问题描述】:

我有一个在 Windows Server 2003 上运行的 IIS 服务器。该服务器托管多个网站。

有时CPU负载会在很长一段时间内达到峰值,导致服务器停止响应或响应延迟。

问题是我们不知道多个网站中的哪一个造成了高负载 - 我尝试在性能监视器中查看可以使用的计数器,但我没有看到任何关于特定 CPU 负载的信息IIS 实例。

这使得很难找到问题的根源。

【问题讨论】:

    标签: performance iis


    【解决方案1】:

    每个应用程序池都有 w3wp.exe 进程。所以尝试将每个 Web 应用程序设置在不同的应用程序池中。顺便说一句,这始终是一个好习惯。

    然后运行following script

    然后您可以通过任务管理器或性能监视器查看哪个 Web 应用程序造成了高 CPU 负载。

    【讨论】:

    • +1。我冒昧地进行了编辑,以免 URL 超出页面的一侧。
    【解决方案2】:

    您是否尝试检查垃圾收集 2 峰值(# Gen 2 Collections)的性能计数器?

    CPU 负载非常高的时期通常可以归因于此。

    编辑:这个 SO 答案可能有用:What are the best ASP.NET performance counters to monitor?

    这篇博文描述了收集和解释 GC 性能计数器:http://blogs.msdn.com/maoni/archive/2004/06/03/148029.aspx

    【讨论】:

    • 我现在监控它们,但我如何解释这些数字?应该期待什么?
    • 我假设您正在运行 ASP.NET(可能不是这样?)大的 Gen 2 堆和大量的 Gen 2 集合可能意味着太多的对象被保留在记忆。
    • 什么是大数? :-) 我看到的值范围从 2 到 40,我认为这不是一个大数字。
    【解决方案3】:

    使用 WMI 试试:

    获取进程使用情况(W2K3/2K8):
    "SELECT IDProcess, PercentPrivilegedTime, PercentProcessorTime, PercentUserTime FROM Win32_PerfFormattedData_PerfProc_Process where Name='w3wp'"

    要识别您的网站,请使用:
    "SELECT ProcessId, CommandLine, WorkingSetSize, ThreadCount, PrivatePageCount, PageFileUsage, PageFaults, HandleCount, CreationDate, Caption FROM Win32_Process where Caption='w3wp.exe'"

    使用此工具测试 sql:http://code.msdn.microsoft.com/NitoWMI

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      相关资源
      最近更新 更多