Tengo un servidor Windows 2008R2 con NSClient ++. Por alguna razón, el servicio ha cambiado sus bragas y ha dejado de responder a las encuestas de Nagios.
Cuando traté de reiniciar el servicio, el administrador del servicio tarda mucho tiempo en intentar matarlo y finalmente se da por vencido con un mensaje que dice "el servicio tardó demasiado en responder". Pero ... también comienza una nueva instancia del servicio.
Si miro en el Administrador de tareas o tasklist
ahora puedo ver dos instancias de nsclient++.exe
ejecución.
Traté de matar a ambos usando:
haga clic con el botón derecho y "Finalizar proceso" en el administrador de tareas: pretende matar el proceso e informa que no hay errores (por ejemplo, Acceso denegado), pero el proceso sigue ahí.
taskkill /PID <proc id> /F
- informaSUCCESS: The process with PID 6672 has been terminated.
pero el proceso aún se está ejecutando.descargué SysInternals PsTools y ejecuté
pskill <PID>
informesProcess <PID> killed
, pero el proceso todavía está allí.ejecute
at hh:mm pskill <PID>
parapskill
hacer esto como laSYSTEM
cuenta ... y adivinó que el proceso aún se está ejecutando.
Todo lo anterior se ejecutó en un símbolo del sistema del Administrador.
Aparte de un reinicio que no es realmente ideal (la caja es un servidor de producción bastante crítico), ¿qué más puedo probar?
El servidor no está bajo ninguna presión de recursos (memoria, CPU, disco, etc.) y todo lo que se ejecuta en él está funcionando muy bien.
Como un vistazo rápido a la pestaña de subprocesos en SysInternals Process Explorer muestra que todas estas nsclient++.exe
instancias están atascadas en la descarga:
Por otro lado, también intenté eliminar todas las conexiones TCP para estos procesos zombies (?) (Con TCPView) con la esperanza de poder iniciar una nueva instancia y poder tomar el puerto 5666. Luego podríamos reiniciar el servidor cuando las cosas están más tranquilas, pero eso no funcionó.
Stack
, ¿cómo se ve la pila para los hilos atascados?Respuestas:
Aunque parece que ya lo has resuelto, el problema es que el proceso está esperando algo en el Kernel. (Esto suele ser un problema de nivel de controlador, pero no siempre). La única forma de eliminar dicho proceso es descargar el kernel, lo que, por supuesto, no se puede hacer sin reiniciar.
Puede valer la pena intentar alguna depuración del kernel (¿ funciona esta herramienta en 2008 R2 ?) Con la esperanza de reducir la causa o el conflicto específico, pero sus opciones para manejar el problema son vivir con él o reiniciar el servidor para eliminarlo.
¿Hay alguna razón por la que no has considerado vivir con ella? Si es solo un proceso zombie, y no está afectando nada, creo que podría posponer un reinicio hasta una ventana de mantenimiento o un momento más oportuno. Por lo general, mi enfoque, cuando el proceso zombie o colgado no interfiere con nada, cuídalo durante el siguiente ciclo de parche o la ventana de mantenimiento programado.
fuente