NSClient ++を実行しているWindows 2008R2サーバーがあります。なんらかの理由で、サービスはひざまずいて、Nagiosのポーリングに応答しなくなりました。
サービスを再起動しようとすると、サービスマネージャーがサービスを強制終了するのに長い時間がかかり、最終的に「サービスの応答に時間がかかりすぎた」というメッセージが表示されます。しかし...それはまた、サービスの新しいインスタンスを開始します。
タスクマネージャーを確認するとtasklist
、nsclient++.exe
実行中の2つのインスタンスが表示されています。
私はこれらの両方を使って殺そうとしました:
タスクマネージャーで右クリックして[プロセスの終了]-プロセスを強制終了するふりをし、エラー(たとえば、アクセス拒否)を報告しませんが、プロセスはまだそこにあります。
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
インスタンスがアンロードされたままになっていることがわかります。
余談ですが、新しいインスタンスを開始してポート5666を取得できることを期待して、これらのゾンビ(?)プロセスのすべてのTCP接続を(TCPViewで)強制終了することも試みました。その後、サーバーを再起動できます。物事は静かですが、うまくいかなかったとき。
Stack
と、スタックしたスレッドのスタックはどのようになりますか?