我在我们的一台 Web 服务器(win2k3 上的 IIS 6.0)上发现以下可疑行为。两个 CPU 超线程化为 4。
在任务管理器和 perfmon 中,w3wp.exe 的 CPU 利用率似乎确实降到了 25%。降到最低的意思是,CPU 利用率永远不会低于该数字,即使服务器不处理任何请求,也保持在该值。此外,查看任务管理器中的性能选项卡,各个 CPU 的利用率波动很大,但总体 CPU 利用率保持恒定在 25%。也就是说,CPU 的广泛变化值恰好总是加起来等于 25%。
在我看来,这些计数器似乎有些问题。它计算时好像 1 个 CPU(4 个中的 1 个)已完全利用,但事实上可能并非如此。
知道那里可能发生了什么吗?以前有人见过类似的事情吗?(同一集群中的另一台机器表现出类似的行为,只是 w3wp.exe 消耗了 50% 的 CPU,同样几乎没有流量)。
谢谢
答案1
我会获取长时间的 perfmon 计数器读数,然后通过 PAL 工具运行它。看看它会产生什么结果。
答案2
听起来你可能启用了处理器亲和性。这会将工作线程绑定到特定 CPU。如果你有一台四核服务器,那么 25% 就合理了。我的建议是创建一个新的应用程序池,将网站移到其中,然后看看模式是否发生变化。
至于首先是什么导致了 CPU 占用,是否有任何可能被调用的页面或网站?尝试回收应用程序池,看看它是否立即发生。如果可以,将网站分成更多的应用程序池,找出哪个网站导致了这个问题,这样你就可以缩小问题页面的范围。
答案3
查看工作进程数(通常为 1),如果合理,则增加到 2-3。然后,如果您查看 IIS 管理器并转到您认为造成严重破坏的应用程序池,请选择应用程序池默认值,并将 CPU 设置为百分比,例如 70%,而不是 0(无限制),然后将限制操作设置为节流(反之亦然...无操作)这将有助于重新控制失控的 CPU 需求...