Windows 2008R2でハングしたサービスを強制終了する方法


8

NSClient ++を実行しているWindows 2008R2サーバーがあります。なんらかの理由で、サービスはひざまずいて、Nagiosのポーリングに応答しなくなりました。

サービスを再起動しようとすると、サービスマネージャーがサービスを強制終了するのに長い時間がかかり、最終的に「サービスの応答に時間がかかりすぎた」というメッセージが表示されます。しかし...それはまた、サービスの新しいインスタンスを開始します。

タスクマネージャーを確認するとtasklistnsclient++.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で)強制終了することも試みました。その後、サーバーを再起動できます。物事は静かですが、うまくいかなかったとき。


3
プロセスがタスクマネージャーで強制終了しない場合、実際にはカーネルルーチンでスタックしています...したがって、Windowsで問題が発生しています。「興味深い」ドライバがインストールされていますか?
Chris S

ドライバーの観点から見て、エキゾチックなものは何もありません。これはXenServer VMなので、通常は問題のない通常のXenドライバーがあります。また、R1 CDP Enterpriseも実行しており、通常の動作パラメーター内で動作しているようです。procexp.exeからスレッドのタブを示すスクリーンショットを追加しました。
Kev 2012

をクリックするStackと、スタックしたスレッドのスタックはどのようになりますか?
HeatfanJohn 2012

@HeatfanJohn-私もそのことを考えましたが、そうするとエラー「スレッドへのアクセス」が発生します。
ケブ2012

私の推測では、これはカーネルルーチンでスタックしているという@ChrisSのコメントに関連しています。
HeatfanJohn 2012

回答:


3

すでにこれを理解しているようですが、問題はプロセスがカーネルで何かを待っていることです。(これは通常、ドライバーレベルの問題ですが、常にそうであるとは限りません。)そのようなプロセスを強制終了する唯一の方法は、カーネルをアンロードすることです。

特定の原因または競合を絞り込むことを期待して、いくつかのカーネルデバッグを試す価値があります(このツールは2008 R2で機能しますか?)。

一緒に暮らすことを考えなかった理由はありますか?それがゾンビプロセスであり、何も影響を与えていない場合は、メンテナンスウィンドウまたはより都合のよい時間までリブートを延期できると思います。通常、私のアプローチは、ゾンビプロセスまたはハングしたプロセスが何も妨げていない場合-次のパッチサイクルまたは定期メンテナンス期間中に処理します。


残念ながら、WinDbgでこれらのプロセスを調べるには遅すぎて、インフラストラクチャの担当者がサーバーを再起動しました。しかし、次回のために知っておくと便利です。
ケブ2012

もう一つの問題は、私たちがこのようにそれと共に生きることができないということでした。サービスは、nagiosと組み合わせて使用​​するNSClient ++です。これらのゾンビ化されたプロセスがまだリッスンしているポート5666にぶら下がっていたため、新しいサービスexeを実行してポーリングリクエストに応答することさえできませんでした(確かに、TCPViewでポートを保持しているプロセスの1つを確認できます。それを閉じることができませんでした)。
Kev 2012

まあ、それは確かにそれと共存しない非常に良い理由です。
HopelessN00b 2012

再び発生する場合は、Mark Russinovichの別の赤ちゃん-Process Monitorを忘れないでください。procmonをプロセスに向けて、プロセスの動作を確認します。素晴らしいツール。
Simon Catlin

@SimonCatlin-ええ、私もそうしましたが、実際に私に飛び出したものはありません。
ケブ2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.