O IIS pode cuidar disso sozinho; você pode configurar um pool de aplicativos para ser reciclado (ou seja, reiniciado) quando o uso da CPU ficar acima de um determinado limite por um determinado período de tempo.
Eu tenho um problema intermitente com meu aplicativo. Está sempre sob carga relativamente alta (10-50 req / segundo). Na maioria das vezes corre fantasticamente, com CPU < 10%. Ocasionalmente (cerca de uma vez por semana) subitamente aumenta para 100% a CPU ao longo de cerca de 3 minutos e depois fica lá fazendo com que o servidor pare de responder até que eu mate o w3wp.exe. Eu continuo tentando depurar esse problema. Nesse meio tempo eu preciso de uma solução temporária.
Existe um serviço ou ferramenta que eu possa usar para monitorar o w3wp.exe e automaticamente matar o processo se ele ficar acima de 80% de utilização por um período de tempo?
Eu não sei se você tem outras máquinas em seu ambiente, mas eu sugiro colocar algum monitoramento dentro do Nagios ou Zabbix ou um aplicativo como esse. Eles podem monitorar o uso da CPU / espaço em disco / memória / etc etc ... se o uso da CPU ficar acima de 80% ou 90% por qualquer período que você considerar muito longo, então o sistema de monitoramento pode disparar um trabalho (zabbix é capaz de fazer isso, chamar itens externos) para matar esse pool. Com essa solução, há um pouco de curva de aprendizado. No entanto, você precisaria aprender o aplicativo e escrever um script para reiniciar o pool de aplicativos ... algo como um aplicativo .net ou um script vb que usa o aplicativo do IIS para determinar o pool de aplicativos responsável e, em seguida, uma linha de comando kill nesse processo.