Introduction
Ce document décrit comment travailler avec des processus zombies vus sur CUCM, IMnP et d'autres produits Cisco UC lors de leur connexion à l'aide de l'interface de ligne de commande Admin.
Conditions préalables
Conditions requises
Cisco recommande que vous connaissiez l'utilisation de l'interface de ligne de commande Admin des serveurs UC :
- Gestionnaire de communications unifiées de Cisco (version CUCM)
- Serveur de messagerie instantanée et de présence Cisco Unified (IMnP)
- Serveur Cisco Unity Connection (CUC)
Components Used
Ce document n'est pas limité à des versions de matériel et de logiciel spécifiques.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Informations générales
Les serveurs Unified Communications sont essentiellement des applications basées sur Linux OS. Lorsqu'un processus meurt sous Linux, il n'est pas immédiatement retiré de la mémoire, son descripteur de processus (PID) reste dans la mémoire qui ne prend qu'une petite quantité de mémoire. Ce processus devient un processus défunt et le parent du processus est informé que son processus enfant est mort. Le processus parent est alors censé lire l'état de sortie du processus mort et le supprimer complètement de la mémoire. Une fois que cela est fait en utilisant l'appel système wait(), le processus zombie est éliminé de la table de processus. C'est ce que l'on appelle le processus zombie. Cela se produit généralement très rapidement, de sorte que vous ne verrez pas des processus zombies s'accumuler sur votre système.
Cependant, parfois les processus parents ne font pas l'appel de signal wait(), et le processus enfant restera dans la mémoire jusqu'au nettoyage. En d'autres termes, un processus zombie est un processus dont l'exécution est terminée, mais qui a toujours une entrée dans la table de processus, car le processus parent doit toujours lire l'état de sortie de son enfant.
Vérifier les zombies à l'aide de l'interface CLI d'administration UCOS
À partir de l'interface de ligne de commande, la présence de zombies peut être vérifiée à l'aide de la commande show process load.
Dépanner/effacer manuellement les zombies
En dehors de la minuscule mémoire utilisée pour conserver le PID comme mentionné précédemment, les processus Zombie n'utilisent aucune ressource système, mais ils conservent leur ID de processus. Dans les serveurs UC, la mémoire fournie au système est importante de sorte que la possibilité que le système soit à court de PID pour d'autres processus en raison de la présence de Zombies est beaucoup moins grande.
Ainsi, les zombies peuvent être laissés sur le système, où ils sont automatiquement effacés lors du prochain redémarrage du système.
Cependant, s'il est nécessaire d'effacer les zombies du système, vous pouvez suivre une certaine ligne d'action
Redémarrer le service approprié
Il est nécessaire de déterminer le processus concerné et donc le service qui fuit le processus enfant.
- À partir de la sortie CLI, prenez la sortie de show process list et show process list detail.
- Copiez les sorties dans un éditeur de texte et recherchez le texte 'défunt' dans le fichier.
- Notez les ID de processus (pid) et les ID de processus parent (ppid) pour ces processus défunts.
- Recherchez le processus associé dans le pid du document.
Exemple 1
CUCM: Lorsque je recherche le texte 'défunt' dans le fichier, je vois qu'il y a un PID 22908 qui est défunt.
Le Ppid de ce PID est 29815. Sur le suivi 29815 dans le document, je vois que le processus est lié au service AMC.
Solution - Redémarrer AMC(Alert Manager and Collector Service) sur ce noeud efface le Zombie.
Exemple 2
CUCM: Lorsque le fichier du texte défunt est recherché, je vois qu'il y a un PID 10025 qui est défunt.
Le Ppid de ce PID est 26732. Lors du suivi 26732 dans le document, vous voyez que le processus est lié au service de collecte de trace.
Solution : redémarrez le service de collecte de trace sur ce noeud pour effacer le zombie.
Exemple 3
CUCM : Quand le fichier du texte défunt est recherché, vous voyez qu'il y a un PID 23959 qui est défunt.
Le Ppid de ce PID est 26764. Sur le suivi 26764 dans le document, je vois que le processus est lié au service de référentiel CDR(cdrrep)
Solution - Redémarrer le service de référentiel CDR efface ce Zombie.
Exemple 4
CUC : Quand le fichier du texte défunt est recherché, vous voyez qu'il y a trois PID 325, 370, 387 qui sont défunts.
Le ppid de tous ces PID est 7827. Lors du suivi 7827 dans le document, vous voyez que le processus est lié au service Syncer des fichiers de connexion.
Solution : redémarrez le service Syncer des fichiers de connexion pour effacer les zombies.
Exemple 5
IMnP : Lorsque le fichier du texte défunt est recherché, vous voyez qu'il y a un PID 1806 défunt.
Le Ppid de ce PID est 1775. Lors du suivi 1775 dans le document, vous voyez que le processus est une connexion SFTP à un autre noeud IMnP dans le même cluster.
Solution : dans IMnP, les processus SSH par défaut appartenant à SFTP peuvent être vus. Ils ont été trouvés cosmétiques et peuvent être supprimés par un redémarrage du serveur.
Redémarrez le serveur
Un redémarrage du serveur concerné efface toutes les entrées obsolètes dans la table de processus et efface donc les zombies dans le système.
Tuer le processus parent
À partir de Linux, vous ne pouvez pas tuer les processus zombies comme les processus normaux sont tués avec le signal SIGKILL — les processus zombies sont déjà morts. Cependant, vous pouvez supprimer le processus parent. La commande utilisée dans ce scénario est la suivante :
kill -9 <ppid>
Contactez le TAC pour effectuer cette solution de contournement. Assurez-vous d'être prudent lors de la mise à mort du processus parent pour vous assurer qu'aucun service critique n'est brusquement désactivé.
Vérification
Une fois les zombies effacés, utilisez la même commande show process load pour vérifier le nombre de zombies.