Ich habe einen Windows 2008R2-Server mit NSClient ++. Aus irgendeinem Grund hat der Dienst seine Schlüpfer in eine Wendung gebracht und reagiert nicht mehr auf Nagios-Umfragen.
Als ich versuchte, den Dienst neu zu starten, brauchte der Dienstmanager lange, um zu versuchen, den Dienst zu beenden, und gab schließlich die Meldung "Der Dienst hat zu lange gebraucht, um zu antworten" auf. Aber ... es wird auch eine neue Instanz des Dienstes gestartet.
Wenn ich in den Task-Manager schaue oder tasklist
jetzt zwei Instanzen der nsclient++.exe
Ausführung sehe .
Ich habe versucht, beide zu töten, indem ich:
Rechtsklick und "Prozess beenden" im Task-Manager - gibt vor, den Prozess abzubrechen, und meldet keine Fehler (z. B. Zugriff verweigert), aber der Prozess ist noch vorhanden.
taskkill /PID <proc id> /F
- meldet,SUCCESS: The process with PID 6672 has been terminated.
aber der Prozess läuft noch.SysInternals PsTools heruntergeladen und ausgeführt
pskill <PID>
- BerichteProcess <PID> killed
- aber der Prozess ist noch da.ausführen
at hh:mm pskill <PID>
, umpskill
dies alsSYSTEM
Konto zu tun ... und Sie haben es erraten, der Prozess läuft noch.
Alle oben genannten Schritte wurden an einer Administrator-Eingabeaufforderung ausgeführt.
Was kann ich außer einem Neustart, der nicht wirklich ideal ist (die Box ist ein ziemlich geschäftskritischer Produktionsserver), noch versuchen?
Der Server steht nicht unter Ressourcendruck (Speicher, CPU, Festplatte usw.) und alles, was darauf läuft, tuckert einwandfrei.
Ein kurzer Blick auf die Registerkarte "Threads" im SysInternals Process Explorer zeigt, dass alle diese nsclient++.exe
Instanzen beim Entladen hängen bleiben:
Nebenbei habe ich auch versucht, alle TCP-Verbindungen für diese Zombie (?) -Prozesse (mit TCPView) zu beenden, in der Hoffnung, dass ich eine neue Instanz starten und Port 5666 abrufen kann. Dann können wir den Server neu starten wenn die Dinge ruhiger sind, aber leider hat das nicht funktioniert.
Stack
, wie sieht der Stapel für die festsitzenden Threads aus?Antworten:
Obwohl es so aussieht, als hätten Sie dies bereits herausgefunden, besteht das Problem darin, dass der Prozess auf dem Kernel auf etwas wartet. (Dies ist normalerweise ein Problem auf Treiberebene, aber nicht immer.) Die einzige Möglichkeit, einen solchen Prozess abzubrechen, besteht darin, den Kernel zu entladen, was natürlich nicht ohne einen Neustart möglich ist.
Es könnte sich lohnen, ein Kernel-Debugging zu versuchen ( funktioniert dieses Tool unter 2008 R2 ?), In der Hoffnung, die spezifische Ursache oder den Konflikt einzugrenzen, aber Ihre Optionen zur Behebung des Problems bestehen entweder darin, oder Sie starten den Server neu, um es zu beseitigen.
Gibt es einen Grund, warum Sie nicht daran gedacht haben, damit zu leben? Wenn es sich nur um einen Zombie-Prozess handelt und keine Auswirkungen hat, können Sie einen Neustart bis zu einem Wartungsfenster oder einer günstigeren Zeit verschieben. Normalerweise ist mein Ansatz, wenn der Zombie- oder Hang-Prozess nichts stört - kümmern Sie sich während des nächsten Patch-Zyklus oder des geplanten Wartungsfensters darum.
quelle