我们有一台 Windows 2003 服务器,其中有 3 个服务在持续运行。有时这些服务消耗超过 90% 的 CPU。重新启动这些服务即可恢复正常。我需要一个脚本/程序来持续监控 CPU 使用率,如果使用率很高,则重新启动这些服务。
经过一番研究,我发现这个脚本可以监控 CPU 使用率科技网。
监控CPU使用率的脚本:
(get-counter -Counter "\Processor(_Total)\% Processor Time"
-SampleInterval 1 -MaxSamples 10 |
select -ExpandProperty countersamples | select -ExpandProperty
cookedvalue | Measure-Object -Average).average
这将监视 CPU 使用率 10 秒,然后显示平均输出。
更多来自堆栈溢出和服务器故障我找到了重新启动 Windows 服务的脚本。(哪一个更好?)
现在我需要的是 CPU 使用率脚本在使用率 >90% 的条件满足时调用服务重启脚本。如能得到任何帮助我将不胜感激。
答案1
只是为了记录..这是回答:
$cpuutil=(get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5 |
select -ExpandProperty countersamples | select -ExpandProperty cookedvalue | Measure-Object -Average).average
If ($cpuutil -ge 90)
{Restart-Service MyService1, "My Service2", MyService3}
Else
{Exit}
Powershell 确实让生活变得更简单!
答案2
如果商业解决方案可以,请查看我们的服务保护者。它将照看任何 Windows 服务,如果该服务占用 CPU 时间过长,它将重新启动它。