我有一台运行NSClient ++的Windows 2008R2服务器。由于某种原因,该服务陷入困境,并停止响应Nagios的民意调查。
当我尝试重新启动服务时,服务管理器花了很长时间尝试并终止该服务,然后最终放弃了一条消息,内容为“该服务花费了太长时间才能响应”。但是...它还会启动服务的新实例。
如果我查看任务管理器,或者tasklist
现在可以看到两个nsclient++.exe
正在运行的实例。
我试图使用以下方法杀死这两个对象:
右键单击,然后在任务管理器中单击“结束进程”-假装杀死该进程并且不报告任何错误(例如Access Denied),但该进程仍然存在。
taskkill /PID <proc id> /F
-报告,SUCCESS: The process with PID 6672 has been terminated.
但进程仍在运行。下载SysInternals PsTools并运行
pskill <PID>
-报告Process <PID> killed
-但是该过程仍然存在。执行
at hh:mm pskill <PID>
以帐户的pskill
身份执行此操作SYSTEM
...,您猜测它仍在运行。
以上所有操作均在管理员命令提示符下运行。
除了不太理想的重启(该盒子是相当关键的生产服务器)之外,我还能尝试什么?
服务器没有任何资源压力(内存,CPU,磁盘等),并且服务器上运行的所有东西都运行良好。
快速浏览SysInternals Process Explorer中的threads选项卡显示所有这些nsclient++.exe
实例都处于卸载状态:
顺便说一句,我还尝试杀死这些zombie(?)进程(使用TCPView)的所有TCP连接,以期希望我可以启动一个新实例并能够抓住端口5666。然后我们可以重新启动服务器。当事情变得安静时,可惜那没用。
Stack
,卡住的线程的堆栈是什么样的?