请帮助完善在我们的商店进行的讨论。
考虑以下情况。 有一个Microsoft VPC运行几个应用程序和服务(Windows 2003服务器)。 服务器有两个或三个关键angular色。 每隔一段时间CPU持续使用率就达到100%。 其中一个罪魁祸首是遗留应用程序,目前唯一真正的解决scheme是重新启动服务。 之后,CPU利用率恢复到合理的水平(平均60-80%)。 但是,当服务器处于100%CPU时,不太经常的情况是,另一个服务似乎正在使用大部分共享,这是一个分析日志的安全应用程序。 我们的运营团队的冲动是重新启动,以及当CPU挂钩。 我们的安全团队指出,这是毫无意义的,因为这个服务是以低于正常优先级运行的,所以它不会剥夺任何其他CPU的进程。 安全性认为,在这种情况下100%的CPU使用率应该不被认为是一个关键条件。 如果一个BelowNormal优先级进程正在使用大部分的CPU,那么实际上根本没有CPU的缺陷。 另一方面,操作人员对100%的CPU使用率真的成为一个没有不良后果的情况持怀疑态度,并且不想忽视这一点。 谁是对的? 安全是正确的,没有什么可担心的或者我们应该做的事情?
在这样的情况下,你需要超越任务pipe理器,看CPU使用率。 这并不能告诉你是否有什么不利影响性能。 对于这种情况下,下一步将是使用性能监视器来查看系统\处理器队列长度 。 这告诉你是否进程正在等待CPU空闲,可能会影响性能。 这与您在Unix中看到的或者在Unix中加载命令类似。
本文对解决这些问题时的性能指标进行了很好的说明。 它最初是用于NT4,但仍适用于较新的版本。
以下是Windows性能团队最近发表的一篇文章 ,讲述如何利用CPU追踪性能问题。
你如何衡量CPU%? 如果这是一台虚拟机,则Perfmon可能无法始终提供准确的结果。 有没有可能与主机上的活动有关? 病毒扫描,自动更新等很多其他的东西都可能影响guest虚拟机,并且从虚拟机的angular度来看,它看起来像是100%cpu,它可能是一个更小的CPU片的100%。
处理大量的日志数据是应该挂住CPU的东西。 如果没有,那么你的过程可能会受到IO的约束。 只要计量器在处理完成后又回落(而且机器可以合理地响应与其挂钩的其他任务),则无需担心。