Мне было интересно, есть ли какие-либо бесплатные / открытые решения, которые будут запускать и останавливать службу 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% запаса между включением и выключением, хотя можно создать пакетный файл, чтобы отложить слишком частый запуск и остановку службы.
Надеюсь это поможет