Einführung
In diesem Dokument wird beschrieben, wie Sie mit Zombie-Prozessen arbeiten können, die auf CUCM-, IMnP- und anderen Cisco UC-Produkten angezeigt werden, wenn Sie mit der Admin-CLI angemeldet sind.
Voraussetzungen
Anforderungen
Cisco empfiehlt, über Kenntnisse der Verwendung der Admin-CLI der UC-Server zu verfügen:
- Cisco Unified Communications Manager (CUCM)
- Cisco Unified Instant Messaging and Presence Server (IMnP)
- Cisco Unity Connection Server (CUC)
Verwendete Komponenten
Dieses Dokument ist nicht auf bestimmte Software- und Hardware-Versionen beschränkt.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Hintergrundinformationen
Die Unified Communications-Server basieren im Wesentlichen auf Linux-Betriebssystemen. Wenn ein Prozess unter Linux stirbt, wird er nicht sofort aus dem Speicher entfernt, sein Prozessdeskriptor (PID) bleibt im Speicher, der nur eine winzige Menge an Arbeitsspeicher benötigt. Dieser Prozess wird zu einem nicht mehr funktionierenden Prozess, und das übergeordnete Element des Prozesses wird darüber informiert, dass sein untergeordneter Prozess beendet wurde. Der übergeordnete Prozess soll dann den Exit-Status des Dead-Prozesses lesen und ihn vollständig aus dem Speicher entfernen. Sobald dies mit dem Systemaufruf wait() erfolgt ist, wird der Zombie-Prozess aus der Prozesstabelle entfernt. Dies wird als Wiederaufnahme des Zombie-Prozesses bezeichnet. Dies geschieht in der Regel sehr schnell, sodass Sie keine Zombie-Prozesse mehr auf Ihrem System sehen.
Manchmal führen die übergeordneten Prozesse jedoch keinen Aufruf des Signals wait() durch, und der untergeordnete Prozess bleibt im Speicher, bis er bereinigt wird. Mit anderen Worten, ein Zombie-Prozess ist ein Prozess, dessen Ausführung abgeschlossen ist, aber noch immer einen Eintrag in der Prozesstabelle hat, da der übergeordnete Prozess den Exit-Status des untergeordneten Prozesses noch lesen muss.
Zombies mithilfe der UCOS Admin-CLI überprüfen
Über die CLI kann das Vorhandensein von Zombies mit dem Befehl show process load überprüft werden.
Fehlerbehebung/manuelles Löschen der Zombies
Abgesehen von dem winzigen Speicher, der zur Speicherung der PID wie oben erwähnt verwendet wird, verwenden Zombie-Prozesse keine Systemressourcen, aber sie behalten ihre Prozess-ID bei. In UC-Servern ist der Speicher für das System groß, sodass die Möglichkeit, dass das System aufgrund von Zombies keine PIDs für andere Prozesse mehr ausführt, sehr gering ist.
Die Zombies können also im System verbleiben, wo sie beim nächsten Systemneustart automatisch gelöscht werden.
Wenn jedoch eine Anforderung besteht, die Zombies im System zu löschen, können Sie eine bestimmte Aktionslinie befolgen
Den entsprechenden Service neu starten
Es ist erforderlich, den betreffenden Prozess und damit den Dienst zu ermitteln, der den untergeordneten Prozess leckt.
- In der CLI-Ausgabe können Sie die Ausgabe der Prozessliste anzeigen und Prozesslistendetails anzeigen.
- Kopieren Sie die Ausgaben in einen Texteditor und suchen Sie die Datei nach dem Text 'Defunkt'.
- Notieren Sie sich die Prozess-IDs (pid) und die Parent Process IDs (ppid) für diese nicht mehr funktionierenden Prozesse.
- Verfolgen Sie die PID im Dokument, um den zugehörigen Prozess zu finden.
Beispiel 1
CUCM: Wenn ich die Datei nach dem Text 'defunkt' durchsuche, sehe ich, dass es eine PID 22908 gibt, die deaktiviert ist.
Die PID für diese PID lautet 29815. Zur Verfolgung von 29815 im Dokument, sehe ich, dass der Prozess mit dem AMC-Service verbunden ist.
Lösung - Starten Sie AMC (Alert Manager und Collector Service) auf diesem Knoten neu löscht die Zombie.
Beispiel 2
CUCM: Wenn die Datei für den Text deaktiviert wird, sehe ich, dass es eine PID 10025 gibt, die deaktiviert ist.
Die PID für diese PID lautet 26732. Bei Verfolgung 26732 im Dokument sehen Sie, dass der Prozess mit dem Trace Collection Service verknüpft ist.
Lösung: Starten Sie den Trace Collection Service auf diesem Knoten neu, um den Zombie zu löschen.
Beispiel 3
CUCM: Wenn die Datei für den Text deaktiviert wird, sehen Sie, dass die PID 23959 deaktiviert ist.
Die PID für diese PID lautet 26764. Bei Verfolgung 26764 im Dokument sehe ich, dass der Prozess mit dem CDR Repository Service (cdrrep) in Zusammenhang steht.
Lösung - Starten Sie den CDR Repository Service löschen Sie diesen Zombie.
Beispiel 4
CUC: Wenn die Datei für den Text deaktiviert wird, sehen Sie, dass drei PIDs 325, 370, 387 deaktiviert sind.
Die PID für alle PIDs ist 7827. Wenn Sie die 7827 im Dokument verfolgen, sehen Sie, dass der Prozess mit dem Verbindungsdatei-Syncer-Dienst verknüpft ist.
Lösung - Starten Sie den Dienst Verbindungsdatei-Syncer neu, um die Zombies zu löschen.
Beispiel 5
IMnP: Wenn die Datei für den Text deaktiviert wird, sehen Sie, dass die PID 1806 deaktiviert ist.
Die PID für diese PID lautet 1775. Unter Verfolgung 1775 im Dokument sehen Sie, dass der Prozess eine SFTP-Verbindung mit einem anderen IMnP-Knoten im gleichen Cluster ist.
Lösung - Im IMnP werden möglicherweise SFTP-eigene Defunkt-SSH-Prozesse angezeigt. Sie wurden als kosmetisch erachtet und können durch einen Neustart des Servers entfernt werden.
Server neu starten
Ein Neustart des betroffenen Servers löscht alle veralteten Einträge in der Prozesstabelle und löscht somit die Zombies im System.
Übergeordneter Prozess beenden
Unter Linux kannst du Zombie-Prozesse nicht wie normale Prozesse mit dem SIGKILL-Signal abgetötet werden - Zombie-Prozesse sind bereits tot. Sie können den übergeordneten Prozess jedoch beenden. In diesem Szenario wird der folgende Befehl verwendet:
kill -9 <ppid>
Wenden Sie sich für diese Problemumgehung an das TAC. Sorgen Sie beim Abtöten des übergeordneten Prozesses für Sorgfalt, um sicherzustellen, dass kein kritischer Service plötzlich ausfällt.
Überprüfung
Nachdem die Zombies gelöscht wurden, verwenden Sie denselben Befehl show process load, um die Zombie-Anzahl zu überprüfen.