Завершение работы службы Windows в зависимости от нагрузки

Завершение работы службы Windows в зависимости от нагрузки

Мне было интересно, есть ли какие-либо бесплатные / открытые решения, которые будут запускать и останавливать службу Windows в зависимости от нагрузки? У меня есть несколько подписных служб pubsub, которые выполняют фоновую работу, которая не является критической. В идеале я хотел бы иметь возможность автоматизировать вещи, чтобы эти службы могли запускаться, если память/процессор/дисковый ввод-вывод были ниже определенного порога, и останавливаться корректно, если этот порог был достигнут. Знаете ли вы какие-либо решения? Спасибо, JP

решение1

В Windows есть встроенное программное обеспечение, которое делает это, оно называетсяДиспетчер системных ресурсов Windows(WSRM) он будет делать то, что вам нужно, т.е. приоритетные услуги на основе ресурсов.

Разумеется, не с открытым исходным кодом, но поставляется вместе с ОС.

решение2

Я не знаю внешнего инструмента, но вы могли бы отслеживать соответствующие счетчики производительности внутри вашей службы и не выполнять никакой работы (спать в течение некоторого периода времени), если счетчики производительности, которые вы считаете значимыми, превышают пороговые значения. Это не совсем то же самое, что остановить службу (она все еще будет находиться в памяти), но должно достичь желаемого результата.

Одним из преимуществ такого подхода является то, что вам не нужно беспокоиться о настройке и конфигурировании внешнего инструмента или о контроле его работоспособности.

решение3

Вы можете настроить оповещение, которое будет запускаться при фиксированном пороговом значении (например, CPU>=75). Чтобы настроить оповещение в Windows, вот ссылка http://support.microsoft.com/kb/324752

Таким образом, вы можете настроить оповещение для состояния CPU Usage >=75% и в качестве командной строки вы можете использовать

      net stop svcName 

Это остановит службу svcName.

Вы можете задать другое оповещение, противоположное использованию ЦП < 70%, и в качестве командной строки вы можете использовать

      net start svcName 

когда он падает ниже пороговых значений.

Я оставил 5% запаса между включением и выключением, хотя можно создать пакетный файл, чтобы отложить слишком частый запуск и остановку службы.

Надеюсь это поможет

Связанный контент