请帮助完善我们商店中正在进行的讨论。
考虑以下场景。有一个运行多个应用程序和服务的 Microsoft VPC(Windows 2003 服务器)。服务器有两个或三个关键角色。每隔一段时间,CPU 利用率就会持续达到 100%。罪魁祸首之一是遗留应用程序,目前唯一真正的解决方案是重新启动服务。此后,CPU 利用率恢复到合理的水平(平均为 60-80%)。但是,当服务器的 CPU 使用率为 100% 时,另一个服务似乎正在使用最大份额,即解析日志的安全应用程序。我们的运营团队的冲动是在 CPU 锁定时也重新启动它。我们的安全团队指出这是没有意义的,因为该服务以低于正常的优先级运行,因此实际上它不会剥夺任何其他进程的 CPU。安全性认为,在这些情况下 100% 的 CPU 使用率实际上不应被视为关键条件。如果低于正常优先级的进程正在使用大部分 CPU,那么实际上根本没有 CPU 不足。另一方面,运营部门怀疑 100% 的 CPU 利用率是否真的是一个没有不利后果的条件,并且不想忽略它。谁是对的?安全是正确的,它没有什么可担心的,还是我们应该做某事的操作?谁是对的?安全是正确的,它没有什么可担心的,还是我们应该做某事的操作?谁是对的?安全是正确的,它没有什么可担心的,还是我们应该做某事的操作?
在这种情况下,您需要超越任务管理器并查看 % CPU 使用率。这并不能告诉您某些事情是否会对性能产生不利影响。对于这种情况,下一步是使用性能监视器查看System\Processor Queue Length。这会告诉您进程是否正在等待 CPU 空闲,这可能会影响性能。这类似于您在 Unix 中的 top 或 load 命令中看到的内容。
本文很好地描述了在解决这些问题时要查看的性能指标。它最初用于 NT4,但仍适用于较新的版本。
这是Windows 性能团队最近发表的一篇文章,讨论了如何解决 CPU 的性能问题。
你如何测量CPU%?如果这是一台虚拟机,Perfmon 可能并不总是提供准确的结果。峰值是否有可能与主机上的活动有关?病毒扫描、自动更新程序和许多其他事情可能会影响来宾虚拟机,使其看起来像 100% 的 CPU,从虚拟机的角度来看,它可能是 100% 的更小的 CPU 片。
处理大量日志数据应该与 CPU 挂钩。如果没有,那么您的进程可能是 IO 绑定的。只要处理完成后仪表恢复正常(并且机器在挂钩时对它的其他职责做出合理的响应),就没有什么可担心的。