Como encerrar um serviço travado no Windows 2008R2

Como encerrar um serviço travado no Windows 2008R2

Eu tenho um servidor Windows 2008R2 executando NSClient++. Por alguma razão, o serviço ficou nervoso e parou de responder às pesquisas do Nagios.

Quando tentei reiniciar o serviço, o gerenciador de serviço levou muito tempo para tentar encerrar o serviço e, eventualmente, desiste com uma mensagem do tipo "o serviço demorou muito para responder". Mas... também inicia uma nova instância do serviço.

Se eu olhar no Gerenciador de Tarefas ou tasklistagora posso ver duas instâncias de nsclient++.exeexecução.

Eu tentei matar ambos usando:

  • clique com o botão direito e "Finalizar processo" no gerenciador de tarefas - finge encerrar o processo e não relata erros (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.

  • baixei SysInternals PsTools e executei pskill <PID>- relatórios Process <PID> killed- mas o processo ainda está lá.

  • execute at hh:mm pskill <PID>para pskillfazer isso como a SYSTEMconta ... e você adivinhou, 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 nenhuma pressão de recursos (memória, CPU, disco, etc.) e tudo em execução nele está funcionando perfeitamente.

Uma rápida olhada na guia threads no SysInternals Process Explorer mostra que todas essas nsclient++.exeinstâncias estão travadas no descarregamento:

insira a descrição da imagem aqui

Além disso, também tentei eliminar todas as conexões TCP para esses processos zumbis (?) (com TCPView) na esperança de poder iniciar uma nova instância e ela conseguir capturar a porta 5666. Então poderíamos reiniciar o servidor quando as coisas estão mais calmas, mas infelizmente isso não funcionou.

Responder1

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

Pode valer a pena tentar alguma depuração do kernel (essa ferramenta funciona no 2008 R2?) na esperança de restringir a causa ou conflito específico, mas suas opções para lidar com o problema são conviver com ele ou reinicializar o servidor para eliminá-lo.

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

informação relacionada