Windows

如何在 Windows 2008R2 上終止掛起的服務

  • August 24, 2012

我有一個執行 NSClient++ 的 Windows 2008R2 伺服器。出於某種原因,該服務的內褲出現了扭曲,並停止響應 Nagios 的投票。

當我嘗試重新啟動服務時,服務管理器需要很長時間才能嘗試終止服務,然後最終放棄了一條消息,類似於“服務響應時間過長”。但是……它也啟動了一個新的服務實例。

如果我查看任務管理器,或者tasklist我現在可以看到兩個nsclient++.exe正在執行的實例。

我試圖殺死這兩個使用:

  • 右鍵點擊並在任務管理器中“結束程序” - 假裝終止程序並報告沒有錯誤(例如訪問被拒絕)但程序仍然存在。
  • 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 中的執行緒選項卡顯示所有這些nsclient++.exe實例都被卡住解除安裝:

在此處輸入圖像描述

順便說一句,我還嘗試終止這些殭屍(?)程序(使用 TCPView)的所有 TCP 連接,希望我可以啟動一個新實例並且它能夠獲取埠 5666。然後我們可以重新啟動伺服器當事情變得更安靜時,可惜那沒有用。

儘管您似乎已經明白了這一點,但問題是該程序正在核心上等待某些東西。(這通常是驅動程序級別的問題,但並非總是如此。)終止此類程序的唯一方法是解除安裝核心,當然,如果不重新啟動就無法做到這一點。

可能值得嘗試一些核心調試(這個​​工具在 2008 R2 上工作嗎?)以希望縮小具體原因或衝突,但您處理問題的選擇是忍受它,或者重新啟動伺服器以消除它。

你有沒有考慮過和它一起生活的原因?如果它只是一個殭屍程序,並且不會影響任何東西,我認為您可以推遲重新啟動,直到維護視窗或更合適的時間。通常我的方法是,當殭屍或掛起的程序沒有乾擾任何東西時——在下一個更新檔週期或計劃的維護視窗中處理它。

引用自:https://serverfault.com/questions/420860