Eu queria saber se existe alguma solução gratuita/de código aberto que inicie e interrompa um serviço do Windows com base na carga? Tenho alguns serviços de assinante pubsub que realizam trabalho em segundo plano, o que não é crítico. Idealmente, eu gostaria de poder automatizar as coisas para que esses serviços pudessem ser iniciados se a E/S de memória/CPU/disco estivesse abaixo de um determinado limite e parassem normalmente se esse limite fosse atingido. Você conhece alguma solução? Obrigado JP
Responder1
Existe um software embutido no Windows que faz isso chamadoGerenciador de recursos do sistema Windows(WSRM) ele fará o que você quiser, ou seja, priorizará serviços baseados em recursos.
Obviamente não é de código aberto, mas vem com o sistema operacional.
Responder2
Não conheço uma ferramenta externa, mas você pode monitorar contadores de desempenho relevantes dentro do seu serviço e não trabalhar (dormir por algum período) se os contadores de desempenho que você considera relevantes excederem os limites. Isto não seria exatamente o mesmo que parar o serviço (ele ainda estaria residente na memória), mas deveria atingir o fim desejado.
Um benefício dessa abordagem é que você não precisa se preocupar em instalar e configurar uma ferramenta externa ou monitorar se a ferramenta externa ainda está funcionando.
Responder3
Você pode configurar um alerta que pode ser executado em um limite fixo (digamos CPU> = 75). Para configurar um alerta no Windows, aqui está um link http://support.microsoft.com/kb/324752
Então você pode configurar um alerta para a condição CPU Usage >=75% e como linha de comando você pode usar
net stop svcName
Isso interrompe o serviço chamado svcName.
Você poderia ter outro alerta definido para o uso oposto da CPU <70% e como linha de comando você poderia usar
net start svcName
quando você cai abaixo dos limites.
Mantive uma margem de 5% entre ligar e desligar, embora você pudesse criar um arquivo em lote para atrasar o início e a interrupção do serviço com muita frequência.
Espero que isto ajude