Introduzione
Questo documento descrive come utilizzare i processi zombie rilevati su CUCM, IMnP e altri prodotti Cisco UC quando si esegue il login utilizzando la CLI di amministrazione.
Prerequisiti
Requisiti
Cisco raccomanda di essere a conoscenza dell'utilizzo della CLI di amministrazione dei server UC:
- Cisco Unified Communications Manager (CUCM)
- Cisco Unified Instant Messaging and Presence Server (IMnP)
- Cisco Unity Connection Server (CUC)
Componenti usati
Il documento può essere consultato per tutte le versioni software o hardware.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Premesse
I server Unified Communications sono essenzialmente applicazioni basate su sistema operativo Linux. Quando un processo muore su Linux, non viene rimosso immediatamente dalla memoria, il relativo descrittore di processo (PID) rimane in memoria e richiede solo una quantità minima di memoria. Questo processo diventa inattivo e al processo padre viene notificato che il processo figlio è terminato. Il processo padre deve quindi leggere lo stato di uscita del processo inattivo e rimuoverlo completamente dalla memoria. Una volta eseguita questa operazione utilizzando la chiamata di sistema wait(), il processo zombie viene eliminato dalla tabella del processo. Questo processo è noto come processo zombie. Questo generalmente accade molto rapidamente, quindi non vedrete i processi zombie accumularsi sul vostro sistema.
Tuttavia, a volte i processi padre non eseguono la chiamata del segnale wait() e il processo figlio rimane nella memoria fino a quando non viene pulito. In altre parole, un processo zombie è un processo la cui esecuzione è stata completata ma che ha ancora una voce nella tabella del processo, in quanto il processo padre deve ancora leggere lo stato di uscita del relativo figlio.
Controllo degli zombie mediante UCOS Admin CLI
Dalla CLI, è possibile controllare la presenza di zombie con il comando show process load.
Risoluzione dei problemi/Cancellazione manuale degli zombie
A parte la piccola memoria utilizzata per contenere il PID, come accennato in precedenza, i processi Zombie non utilizzano risorse di sistema, ma conservano il loro ID processo. Nei server UC, la memoria fornita al sistema è grande, quindi la possibilità che il sistema esaurisca i PID per altri processi a causa della presenza di Zombies è molto minore.
Gli zombie possono essere lasciati sul sistema, dove vengono azzerati automaticamente al successivo riavvio del sistema.
Tuttavia, se c'è un requisito per cancellare gli zombie nel sistema, è possibile seguire una certa linea di azione
Riavviare il servizio appropriato
È necessario individuare il processo in questione e quindi il servizio che perde il processo figlio.
- Dall'output CLI, catturare l'output show process list e mostrare i dettagli dell'elenco di processi.
- Copiate gli output in un editor di testo e cercate nel file il testo "defunto".
- Prendere nota degli ID processo (pid) e degli ID processo padre (ppid) per i processi inattivi.
- Individuare il PPID nel documento per trovare il processo associato.
Esempio 1
CUCM Quando si cerca nel file il testo 'defunto', viene visualizzato un PID 22908 che è defunto.
Il PPID per quel PID è 29815. Sulla traccia 29815 nel documento, vedo che il processo è relativo al servizio AMC.
Soluzione: riavviare AMC (Alert Manager and Collector Service) su questo nodo per cancellare lo Zombie.
Esempio 2
CUCM Quando si cerca il file per il testo defunto, si nota che il PID 10025 è inattivo.
Il PPID di tale PID è 26732. Nel tracciamento 26732 nel documento, si nota che il processo è correlato al servizio di raccolta di tracce.
Soluzione - Riavviare il servizio di raccolta di tracce in questo nodo per cancellare lo Zombie.
Esempio 3
CUCM: quando si cerca il file per il testo inattivo, si nota che c'è un PID 23959 inattivo.
Il PPID per quel PID è 26764. Sulla traccia 26764 nel documento, vedo che il processo è correlato al servizio CDR Repository (cdrrep)
Soluzione - Il riavvio del servizio CDR Repository elimina questo Zombie.
Esempio 4
Quando si cerca il file per il testo defunto, si nota che ci sono tre PID 325, 370, 387 che sono defunti.
Il PPID per tutti questi PID è 7827. Se si rileva 7827 nel documento, il processo è correlato al servizio Connection File Syncer.
Soluzione - Riavviare il servizio Connection File Syncer per eliminare gli zombie.
Esempio 5
IMnP: Quando si cerca il file per il testo defunto, si vede che c'è un PID 1806 che è defunto.
Il PID per quel PID è il 1775. Nel tracciamento 1775 nel documento, si nota che il processo è una connessione SFTP a un altro nodo IMnP nello stesso cluster.
Soluzione: in IMnP, è possibile che vengano visualizzati i processi SSH inattivi di proprietà di SFTP. Sono stati rilevati come cosmetici e possono essere rimossi tramite il riavvio del server.
Riavvia il server
Il riavvio del server in questione elimina tutte le voci obsolete nella tabella dei processi e, di conseguenza, cancella gli zombie nel sistema.
Termina il processo padre
Da Linux, non è possibile uccidere i processi zombie nel modo in cui i normali processi vengono uccisi con il segnale SIGKILL — i processi zombie sono già morti. Tuttavia, è possibile terminare il processo padre. I comandi utilizzati in questo scenario sono:
kill -9 <ppid>
Contattare TAC per eseguire la soluzione. Garantire la massima attenzione durante l'eliminazione del processo principale, in modo da garantire che nessun servizio critico venga interrotto in modo improvviso.
Verifica
Una volta cancellati gli zombie, utilizzare lo stesso comando show process load per controllare il conteggio degli zombie.