Мне было интересно, есть ли какие-либо бесплатные решения с открытым исходным кодом, которые будут запускать и останавливать службу Windows в зависимости от нагрузки? У меня есть некоторые службы подписки pubsub, которые выполняют фоновую работу, что не является критичным. В идеале я хотел бы иметь возможность автоматизировать вещи, чтобы эти службы могли запускаться, если память / процессор / дисковый ввод-вывод находились ниже определенного порога, и корректно останавливаться, если этот порог был достигнут. Вы знаете какие-нибудь решения? Спасибо, JP
В Windows встроено программное обеспечение, которое делает это, называемое Диспетчер системных ресурсов Windows (WSRM) он будет делать то, что вы хотите, то есть приоритеты служб на основе ресурсов.
Очевидно, не с открытым исходным кодом, но поставляется с ОС.
Мне неизвестен внешний инструмент, но вы можете отслеживать соответствующие счетчики производительности внутри своей службы и не работать (спать в течение некоторого периода времени), если счетчики производительности, которые вы считаете релевантными, превышают пороговые значения. Это не совсем то же самое, что остановка службы (она все равно будет резидентно в памяти), но должна достичь желаемого результата.
Одним из преимуществ этого подхода является то, что вам не нужно беспокоиться о настройке и настройке внешнего инструмента или следить за тем, чтобы внешний инструмент все еще работал.
Вы можете настроить предупреждение, которое может запускаться с фиксированным порогом (скажем, CPU> = 75). Чтобы настроить предупреждение в Windows, вот ссылка http://support.microsoft.com/kb/324752
Таким образом, вы можете настроить предупреждение для условия Использование ЦП> = 75% и в качестве командной строки вы можете использовать
net stop svcName
Это останавливает службу svcName.
У вас может быть другое предупреждение, определенное для противоположного использования ЦП <70%, и в качестве командной строки вы можете использовать
net start svcName
когда вы опускаетесь ниже порога.
Я оставил 5% запаса между включением и выключением, хотя вы можете создать командный файл, чтобы слишком часто откладывать запуск и остановку службы.
Надеюсь это поможет