如何在Windows 2008R2上终止挂起的服务


8

我有一台运行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。然后我们可以重新启动服务器。当事情变得安静时,可惜那没用。


3
如果某个进程无法通过任务管理器终止,那么它实际上就停留在内核例程中……因此Windows出现了问题。您是否安装了“有趣的”驱动程序?
克里斯S

在驱动程序方面没有真正异国情调的运行。它是XenServer VM,因此具有通常不会遇到问题的常规Xen驱动程序。我们还运行R1 CDP Enterprise,并且似乎在正常运行参数范围内运行。我添加了屏幕截图,显示了procexp.exe中的“线程”选项卡。
凯夫2012年

如果单击Stack,卡住的线程的堆栈是什么样的?
HeatfanJohn

@HeatfanJohn-我也想到了这一点,但是在执行此操作时收到错误消息“ Error accessing thread”
凯夫2012年

我的猜测与@ChrisS关于卡在内核例程中的评论有关。
HeatfanJohn

Answers:


3

即使您似乎已经知道了这一点,问题仍然在于该进程正在内核中等待某件事。(这通常是驱动程序级别的问题,但并非总是如此。)杀死此类进程的唯一方法是卸载内核,当然,如果不重新启动,您将无法做到这一点。

可能值得尝试一些内核调试(此工具是否在2008 R2上运行?),以期缩小特定原因或冲突的范围,但是您可以选择解决该问题的方法,或者选择解决该问题或重新启动服务器以消除它。

您有没有考虑与之共处的理由?如果这只是一个僵尸进程,并且没有任何影响,我想您可以推迟重新启动,直到维护窗口或更长时间。通常,当僵尸程序或挂起的进程不干扰任何内容时,我的方法是-在下一个补丁程序周期或计划的维护时段内进行处理。


可悲的是,要在WinDbg中检查这些过程为时已晚,基础架构人员已经重启了服务器。但是方便下次使用。
凯夫2012年

另一个问题是我们不能忍受这样的事情。该服务是NSClient ++,我们与nagios结合使用。我什至无法获得一个新的服务exe来运行并响应轮询请求,我认为是因为这些僵死的进程仍挂在它监听的端口5666上(可以肯定,其中一个仍保留在TCPView中的端口上,我无法关闭它)。
凯夫2012年

好吧,那绝对是不忍受它的一个很好的理由。
HopelessN00b 2012年

如果再次发生,请不要忘记Mark Russinovich的另一个婴儿-Process Monitor。将procmon指向该过程以查看其运行情况。很棒的工具。
西蒙·卡特林

@SimonCatlin-是的,我也这样做了,但没有任何东西真的跳到我身上。
凯夫2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.