Como matar um serviço suspenso no Windows 2008R2

8

Eu tenho um servidor Windows 2008R2 executando o NSClient ++. Por alguma razão, o serviço deixou sua calcinha e parou de responder à pesquisa do Nagios.

Quando tentei reiniciar o serviço, o gerente de serviço demorou a tentar matar o serviço e acabou desistindo de uma mensagem do tipo "o serviço demorou muito para responder". Mas ... também inicia uma nova instância do serviço.

Se eu procurar no Gerenciador de tarefas ou em tasklist , agora posso ver duas instâncias de nsclient++.exe em execução.

Eu tentei matar os dois usando:

  • clique direito e "Finalizar processo" no gerenciador de tarefas - finge matar o processo e não relata nenhum erro (por exemplo, acesso negado), mas o processo ainda está lá.

  • taskkill /PID <proc id> /F - relatórios SUCCESS: The process with PID 6672 has been terminated. , mas o processo ainda está em execução.

  • baixou o SysInternals PsTools e executou o pskill <PID> - relata Process <PID> killed - mas o processo ainda está lá.

  • execute at hh:mm pskill <PID> para obter pskill para fazer isso como a conta SYSTEM ... e você adivinhou que o processo ainda está em execução.

Todos os itens acima foram executados em um prompt de comando do administrador.

Além de uma reinicialização que não é realmente ideal (a caixa é um servidor de produção de missão crítica), o que mais posso tentar?

O servidor não está sob pressão de recursos (memória, CPU, disco, etc.) e tudo o que está sendo executado está funcionando bem.

Como uma rápida olhada na guia de threads no SysInternals, o Process Explorer mostra que todas essas nsclient++.exe instâncias estão descarregadas emperradas:

Como um aparte, eu também tentei matar todas as conexões TCP para esses processos zumbis (?) (com TCPView) na esperança de que eu pudesse iniciar uma nova instância e seria capaz de pegar a porta 5666. Então poderíamos reinicialize o servidor quando as coisas estiverem mais silenciosas, mas, infelizmente, isso não funcionou.

    
por Kev 24.08.2012 / 17:18

1 resposta

3

Embora pareça que você já descobriu isso, o problema é que o processo está aguardando o Kernel por alguma coisa. (Isso geralmente é um problema no nível do driver, mas nem sempre.) A única maneira de eliminar esse processo é descarregar o kernel, o que, obviamente, você não pode fazer sem reinicializar.

Pode valer a pena tentar alguma depuração de kernel ( esta ferramenta funciona em 2008 R2 ?) Na esperança de reduzir a causa específica ou o conflito, mas suas opções para lidar com o problema estão convivendo com ele ou reinicializando o servidor para eliminá-lo.

Existe uma razão pela qual você não considerou viver com isso? Se é apenas um processo zumbi, e não está afetando nada, eu acho que você poderia adiar uma reinicialização até uma janela de manutenção ou um tempo mais oportuno. Normalmente, minha abordagem, quando o processo de zumbi ou suspenso não está interferindo em nada - cuide dele durante o próximo ciclo de correção ou na janela de manutenção agendada.

    
por 24.08.2012 / 20:52