1

У нас есть сервер Windows 2003, на котором постоянно работают 3 службы. Иногда эти сервисы потребляют более 90% процессорного времени. Перезапуск этих сервисов возвращает нормальность. Мне нужен скрипт / программа, которая будет постоянно следить за загрузкой процессора и, если нагрузка высокая, перезапустить эти сервисы

После небольшого исследования я нашел этот скрипт для мониторинга загрузки процессора из Technet.

Скрипт для мониторинга использования процессора:

(get-counter -Counter "\Processor(_Total)\% Processor Time"
-SampleInterval 1 -MaxSamples 10 |
    select -ExpandProperty countersamples | select -ExpandProperty
cookedvalue | Measure-Object -Average).average

Это контролирует использование ЦП в течение 10 секунд, а затем отображает усредненный результат.

Также из Stack Overflow и Server Fault я нашел сценарии для перезапуска служб Windows. (Какой из них лучше?)

Теперь все, что мне нужно, это чтобы сценарий использования ЦП вызывал сценарии перезапуска службы, когда выполняется условие, что использование> 90%. Любая помощь будет оценена.

2 ответа2

4

Просто для записи .. вот ответ

$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 действительно делает жизнь проще!

0

Если коммерческое решение в порядке, проверьте наш Service Protector. Он будет присматривать за любой службой Windows и перезапускать ее, если слишком долго загружает процессор.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .