Routeurs : Routeurs de la gamme Cisco 10000

Dépannage de l'utilisation élevée du CPU sur les routeurs Cisco

16 janvier 2016 - Traduction automatique
Autres versions: PDFpdf | Anglais (31 décembre 2015) | Commentaires


Interactif : Ce document propose une analyse personnalisée de votre périphérique Cisco.


Contenu


Introduction

Ce document décrit les symptômes et les causes courants d'utilisation élevée du CPU sur les routeurs Cisco, et fournit des instructions et des solutions de dépannage.

Conditions préalables

Conditions requises

Le dépannage de l'utilisation du CPU élevé sur des Routeurs de Cisco exige la compréhension des chemins de commutation de logiciel de Ý de Cisco IOS. Pour des informations concernant les chemins de commutation de logiciel IOS de Cisco, consultez Bases de l'optimisation des performances.

Composants utilisés

Ce document n'est pas limité à des versions de matériel et de logiciel spécifiques.

Conventions

Pour plus d'informations sur les conventions des documents, référez-vous aux Conventions utilisées pour les conseils techniques de Cisco.

Symptômes d'une utilisation élevée du CPU

Cette liste décrit les symptômes courants d'une utilisation élevée du CPU. Si vous remarquez l'un de ces symptômes, suivez les étapes de dépannage dans ce document pour soulager le problème.

  • Pourcentages élevés dans la sortie de la commande show processes cpu

    Si vous disposez d'une sortie de la commande show processes cpu de votre périphérique Cisco, vous pouvez utiliser pour afficher les problèmes et les solutions potentiels. Pour l'utiliser, vous devez être un client enregistré , être connecté, et avoir Javascript activé.

  • Représentation lente

  • Les services du routeur ne répondent pas, par exemple :

    • Réponse lente en Telnet ou incapable de Telnet vers le routeur

    • Réponse lente dans la console

    • Lent ou aucune réponse au ping

    • Le routeur n'envoie pas les mises à jour de routage aux autres routeurs

  • Défaillances de la mémoire tampon élevées

Dépannage initial

Une fois que vous notez des symptômes l'uns des des symptômes de l'utilisation du CPU élevé :

  • Vérifiez qu'il n'y ait pas de problème de sécurité. Généralement, l'utilisation élevée du CPU est provoquée par un problème de sécurité, tel qu'un ver ou un virus présent dans votre réseau. C'est d'autant plus probable s'il n'y a pas eu de changements récents apportés à votre réseau. Habituellement, une modification de la configuration, comme l'ajout de lignes supplémentaires à vos listes d'accès peut atténuer les effets de ce problème. Notifications et conseils de sécurité au sujet des produits Cisco contient des informations sur la détection des causes le plus probables et des solutions alternatives spécifiques.

    Pour des informations supplémentaires, référez-vous à :

  • Assurez-vous que toutes les commandes de débogage de votre routeur sont arrêtées en lançant les commandes undebug all ou no debug all. Pour plus d'informations sur l'utilisation des commandes de débogage, référez-vous à Utilisation des commandes de débogage.

  • Pouvez-vous lancer les commandes show sur le routeur ? Si oui, commencez la collecte de davantage d'informations à l'aide des commandes show.

  • Le routeur est-il inaccessible ? Pouvez-vous reproduire ce problème ? Si oui, éteignez et rallumez le routeur et, avant de reproduire le problème, configurez la commande scheduler interval 500. Ceci programme les processus à priorité basse pour qu'ils se lancent toutes les 500 millisecondes, ce qui vous donne le temps de lancer plusieurs commandes, même si l'utilisation du CPU est à 100 pour cent. Sur les routeurs de la gamme Cisco 7200 et 7500, utilisez la commande scheduler allocate 3000 1000.

  • Le routeur montre-t-il des symptômes d'une utilisation élevée du CPU à des intervalles brefs et imprévisibles ? Si oui, collectez périodiquement la sortie de la commande show processes cpu qui montre si l'utilisation élevée du CPU est provoquée par des interruptions ou par un certain processus. Utilisez ce script UNIX et, en tenant compte des premiers résultats, modifiez-le pour collecter des données nécessaires à une recherche plus approfondie du problème.

Détermination des causes et résolution du problème

Utilisez la commande show processes cpu pour contrôler si l'utilisation du CPU est due aux interruptions ou aux processus.

Utilisation élevée du CPU en raison d'interruptions

Pour plus d'informations, référez-vous à Résolution des problèmes d'utilisation élevée du CPU provoquée par des interruptions. Si le niveau du CPU augmente en raison d'interruptions qui sont probablement dues à la commutation de paquets CEF, le niveau du CPU n'affecte pas le fonctionnement du routeur.

Utilisation élevée du CPU lors de l'activation de Netflow NDE sur les routeurs de la gamme Cisco 7600

Si Netflow est configuré pour la version 7, le flux est exécuté par le processeur de routage, ce qui pourrait entraîner une utilisation élevée du CPU.

Pour la résolution des problèmes liés à une utilisation élevée du CPU dû à la version 7 de Netflow, configurez mls nde sender version 5, car l'exportation de Netflow est exécutée par le SP, qui est par défaut pour la version 5 ou 9.

Utilisation élevée du CPU due aux processus

Contrôlez quel processus charge le CPU. Activité inhabituelle liée à des résultats de processus dans un message d'erreur dans le log. Par conséquent, la sortie de la commande show logging exec doit être examinée au préalable pour déceler les erreurs liées au processus qui consomme de nombreux cycles du CPU.

Le débogage peut également être d'une grande aide pour la résolution de problèmes d'utilisation élevée du CPU de dépannage dans les processus. Néanmoins, le débogage doit être effectué avec extrême prudence car il peut augmenter davantage l'utilisation du CPU. Ces conditions doivent être remplies afin de rendre le débogage sûr et utile :

  • Toutes les destinations de journalisation, mis à part la journalisation de la mémoire tampon doivent être désactivées ou leur niveau d'importance de journalisation doit être abaissé de 7 (débogage) à 6 (informationnel) ou moins, à l'aide de la commande de configuration logging destination [severity-level] appropriée. Pour voir quelles destinations de journalisation et quels niveaux correspondants sont activés, lisez l'en-tête de la commande show logging exec.

  • La taille de tampon de journalisation doit être augmentée afin de récupérer suffisamment d'information. Pour plus de détails, référez-vous à la description de la commande globale de configuration Logging buffered.

  • Afin de pouvoir mieux lire et comprendre les débogages, la date-heure et les horodatages en millisecondes doivent être activés. Pour plus de détails, référez-vous à la description de la commande de configuration globale Service timestamps.

Un échantillon d'une session de débogage des paquets IP est fourni dans Résolution des problèmes d'utilisation élevée du CPU dans le processus d'entrée IP.

Pour la résolution des problèmes d'utilisation élevée du CPU dans des processus spécifiques, référez-vous au lien approprié :

  • ARP Input - Section d'entrée ARP du document Résolution des problèmes d'utilisation élevée du CPU due à des processus

  • BGP Router - Section Utilisation élevée du CPU en raison de processus routeur BGP du document Résolution des problèmes d'utilisation élevée du CPU causés par le scanner BGP ou les processus du routeur BGP

  • BGP Scanner - Section Utilisation élevée du CPU en raison du scanner BGP du document Résolution des problèmes d'utilisation élevée du CPU causés par le scanner BGP ou les processus du routeur BGP

  • EXÉCUTIF — Utilisation du CPU élevé dans l'EXÉCUTIF et les processus Virtual Exec

  • HyBridge Input - Résolution des problèmes d'utilisation élevée du CPU causée par le processus d'entrée HyBridge sur les routeurs disposant d'interfaces ATM

  • IP Input - Résolution des problèmes d'utilisation élevée du CPU causée par le processus d'entrée IP

  • IP Simple Network Management Protocol (SNMP) - Le Protocole de gestion de réseau simple (SNMP) provoque une utilisation élevée du CPU

  • LC ADJ Updater - Quelle est la cause d'une utilisation élevée du CPU dans le processus LC Adjacency Updater des routeurs Internet de la gamme Cisco 12000 ?

  • TCP Timer - Section Timer TCP du document Résolution des problèmes d'utilisation élevée du CPU due aux processus

  • TTY Background - Section TTY Background du document Résolution des problèmes d'utilisation élevée du CPU due aux processus

  • Virtual EXEC - Utilisation élevée du CPU dans l'EXEC et les processus EXEC virtuels

  • Vtemplate Backgr - Section Virtual Template Background du document Résolution des problèmes d'utilisation élevée du CPU due aux processus

  • Processus de SSH — Pourrait passer à 1 si capturant un tech d'exposition ou certains mettent au point sont activés.

  • Other processes - Section Autres processus du document Résolution des problèmes d'utilisation élevée du CPU due aux processus

Les pools PCI et Mémoire rapide montrent des taux d'utilisation très élevés

Il est normal de voir peu de mémoire libre avec les pools PCI et Mémoire rapide. La mémoire PCI est utilisée pour l'accès mémoire au contrôleur GT64260 de la carte principale PRP pour les bus PCI qui y sont connectés. Cette mémoire est utilisée pour la communication interne entre le contrôleur système et les autres composants, c'est pourquoi elle semble élevée en permanence.

Si plus de mémoire est nécessaire, elle retombe au pool de mémoire du processeur. La mémoire rapide est un petit ensemble de mémoire qui a été mis de côté pour être utilisé par les structures de données du matériel Interface Descriptor Block (IDB). Cette mémoire est également complètement réservée au cours du démarrage, c'est pourquoi elle s'affiche toujours comme élevée puisque la mémoire est complètement utilisée. Pour cette raison, il est normal de voir peu mémoire libre avec le pool de mémoire rapide.

%SNMP-4-HIGHCPU : Process exceeds [dec]ms threshold ([dec]ms IOS quantum) for [chars] of [chars]--result [chars]

Le message de monopolisation CPU ressemble à ceci :

SNMP-4-HIGHCPU: Process exceeds 200ms threshold (200ms IOS quantum)
for GET of rmon.19.16.0--result rmon.19.16.0

Un nouveau message syslog (HIGHCPU) a été ajouté à IOS dans la version 12.4(13). Si un processus sollicite le CPU pour plus de 200 ms, il enregistre un message HIGHCPU. Le message HIGHCPU n'a aucune incidence sur le routeur. Il vous fait juste savoir quel processus a entraîné l'utilisation élevée du CPU. Le message HIGHCPU est semblable au message CPUHOG, mais le message HIGHCPU a un seuil de tolérance, à 1/10 du temps comparé à un message CPUHOG, c.-à-d., mesuré en millisecondes). Dans les versions antérieures à 12.4(13) sur les 2600, les processus fonctionnaient pendant de plus longues périodes mais ne généraient pas de messages car les versions IOS ne disposaient pas de cette amélioration.

SNMP PDU processing (MIB object queries) sont censées être exécutées dans une seule tranche de temps de CPU pour s'assurer que chaque objet dans le PDU est récupéré simultanément. C'est une condition imposée par la norme du protocole SNMP. Certains objets sont des agrégats de beaucoup de données dans le système, ainsi, même s'ils sont des objets simples, il y a beaucoup de traitement impliqué en raison de la manière dont ils sont utilisés. S'ils n'abandonnent pas le CPU, selon les exigences des règles d'instrumentation MIB, il y a une possibilité de ce message d'erreur. De même, si vous interrogez plusieurs objets différents dans le groupe/table du même objet et obtenez le message d'erreur, ce n'est pas inhabituel pour cette même raison.

Ce message est utilisé pour identifier les objets qui utilisent plus de temps- CPU que prévu (mais toujours pas CPUHOG). Certains NMS/ outils d'instrumentation ne se comportent pas bien lorsqu'ils sont interrogés. Cette question est documentée dans l'ID de bogue Cisco CSCsl18139 (clients enregistrés seulement).

Utilisation élevée du CPU en raison du chiffrement logiciel

Quand il n'y a aucun module de chiffrement matériel installé dans le périphérique, alors tout le traffic chiffré passant par le périphérique devra être chiffré par le logiciel. Ceci sollicite énormément le CPU. Il n'est pas recommandé d'utiliser le logiciel de chiffrement pour un déploiement de chiffrement avec une condition raisonnable de débit. Une manière de résoudre ce problème est de réduire le volume du trafic chiffré (re-router le trafic ou limiter les flux chiffrés). Cependant, la meilleure manière de régler ce problème est d'avoir un module de chiffrement matériel installé pour ce périphérique qui élimine le besoin de chiffrement par le logiciel.

Remarque: L'activation des crypto map sur le tunnel/interfaces physiques est un procédé de consommation de mémoire et peut entraîner une augmentation dans la CPU.

Utilisation du CPU élevé due à la fragmentation

Les réassemblages peuvent piloter vers le haut de la CPU très élevée si la CPU doit rassembler un grand nombre de paquets.

Pour les dépannages de l'utilisation du CPU élevé due à la fragmentation, émettent le TCP mss-ajustent la commande 1400 sur l'interface qui place la valeur maximum de la taille de segment (MSS) du TCP synchronise/des paquets de début (synchronisation) allant par un routeur.

Commandes pour obtenir plus d'informations

Ces commandes fournissent plus d'informations au sujet du problème :

Si le routeur est complètement inaccessible, commencez par l'éteindre et le rallumer. Puis, collectez périodiquement la sortie des commandes dans cette section, excepté le show log command, dont les messages devraient être ouverts une session un serveur de Syslog. L'intervalle pour rassembler le résultat devrait être de cinq minutes. Vous pouvez rassembler les données manuellement ou automatiquement, à l'aide de ce script shell UNIX. Vous pouvez également rassembler des données à l'aide de HTTP ou SNMP. Pour des informations sur la configuration HTTP et SNMP sur un routeur Cisco, référez-vous au document Configuration du logiciel Cisco IOS.

commande show processes cpu

Ceci est un exemple de l'en-tête de la commande show processes cpu :

 CPU utilization for five seconds: X%/Y%; one minute: Z%; five minutes: W% 
  PID  Runtime(ms)  Invoked  uSecs    5Sec   1Min   5Min TTY Process 

Cette table décrit les champs dans l'en-tête :

Champ Description
X Utilisation moyenne totale pendant les cinq dernières secondes (interruptions + processus)
Y Utilisation moyenne due aux interruptions, pendant les cinq dernières secondes1
Z Utilisation moyenne totale pendant la minute passée2
W Utilisation moyenne totale pendant les cinq dernières minutes2
PID ID du processus
Délai d'exécution Temps du CPU que le processus a utilisé (en millisecondes)
Appelé Nombre de fois qu'un processus a été appelé
uSecs Microsecondes du temps CPU pour chaque appel
5Sec Utilisation du CPU par tâche pour les cinq dernières secondes
1Min Utilisation du processeur par tâche pendant la dernière minute2
5Min Utilisation du processeur par tâche dans les cinq dernières minutes2
Téléscripteur Terminal qui contrôle le processus
Processus Nom du processus

Utilisation 1CPU au niveau de processus = DE X/Y

2Values ne représentent pas une moyenne arithmétique, mais une moyenne exponentiellement délabrée. Ainsi, les valeurs les plus récentes ont plus d'influence sur la moyenne calculée.

Utilisez ce lien, pour une explication détaillée de la commande show processes cpu.

Remarque: L'utilisation totale du CPU ne doit pas être utilisée comme mesure de la capacité du routeur à commuter plus de paquets. Sur les routeurs Cisco 7500, les Versatile Interface Processors (VIPs) et les Route/Switch Processors (RSPs) n'enregistrent pas l'utilisation linéaire du CPU. Près de la moitié de la puissance de commutation de paquets par seconde intervient après 90 à 95 pourcents du CPU.

commande show interfaces

La référence des commandes contient une explication détaillée de la commande show interfaces.

Commande show interfaces switching

Cette commande est utilisée pour déterminer les chemins de commutation actifs sur des interfaces. Pour plus d'informations sur les chemins de commutation dans le logiciel Cisco IOS, référez-vous au document Configuration des chemins de commutation.

C'est un exemple de sortie de la commande show interfaces switching pour une interface :

RouterA#show interfaces switching
 Ethernet0 
           Throttle count          0 
         Drops         RP          0         SP          0 
   SPD Flushes       Fast          0        SSE          0 
   SPD Aggress       Fast          0 
  SPD Priority     Inputs          0      Drops          0 

      Protocol       Path    Pkts In   Chars In   Pkts Out  Chars Out 
         Other    Process          0          0        595      35700 
             Cache misses          0 
                     Fast          0          0          0          0 
                Auton/SSE          0          0          0          0 
            IP    Process          4        456          4        456 
             Cache misses          0 
                     Fast          0          0          0          0 
                Auton/SSE          0          0          0          0 
           IPX    Process          0          0          2        120 
             Cache misses          0 
                     Fast          0          0          0          0 
                Auton/SSE          0          0          0          0 
 Trans. Bridge    Process          0          0          0          0 
             Cache misses          0 
                     Fast         11        660          0          0 
                Auton/SSE          0          0          0          0 
       DEC MOP    Process          0          0         10        770 
             Cache misses          0 
                     Fast          0          0          0          0 
                Auton/SSE          0          0          0          0 
           ARP    Process          1         60          2        120 
             Cache misses          0 
                     Fast          0          0          0          0 
                Auton/SSE          0          0          0          0 
           CDP    Process        200      63700        100      31183 
             Cache misses          0 
                     Fast          0          0          0         0 
                Auton/SSE          0          0          0          0 

La sortie mentionne les chemins de commutation pour tous les protocoles configurés sur l'interface, pour que vous puissiez facilement voir quelle sorte et quel niveau de trafic passe par le routeur. Ce tableau explique les différents champs de résultat.

Champ Définition
Processus Paquets traités. Ceux-ci peuvent être des paquets destinés au routeur, ou des packets pour lesquels il n'y avait aucune entrée dans le cache de commutation rapide.
Cache misses Paquets pour lesquels il n'y avait aucune entrée dans le cache de commutation rapide. Le premier paquet pour cette destination (ou flux - selon le type de commutation rapide configuré) sera traité. Tous les paquets suivants seront rapidement commutés, à moins que la commutation rapide soit explicitement désactivée sur l'interface de sortie.
Rapide Paquets commutés rapidement. La commutation rapide est activée par défaut.
Auton/SSE Paquets commutés autonomes, de silicium ou distribués. Disponible seulement sur les routeurs de la gamme Cisco 7000 avec un processeur de commutateur ou un processeur de commutation par silicium (respectivement pour la commutation autonome ou la commutation par silicium), ou sur les routeurs de la gamme Cisco 7500 avec un VIP (pour la commutation distribuée).

commande show interfaces state

Cette commande est une version résumée de la commande show interfaces switching. Ceci est un exemple de résultat pour une interface :

 RouterA#show interfaces stat
 Ethernet0 
           Switching path    Pkts In   Chars In   Pkts Out  Chars Out 
                Processor      52077   12245489      24646    3170041 
              Route cache          0          0          0          0 
        Distributed cache          0          0          0          0 
                    Total      52077   12245489      24646    3170041 

La sortie de la commande show interfaces stat est différente pour différentes plates-formes, selon les chemins de commutation configurés et disponibles.

show ip nat translations

La commande show ip nat translations affiche les traductions d'adresses de réseau (NAT) actives sur le routeur. Chaque traduction active génère des interruptions du CPU et a une incidence sur l'utilisation totale du CPU du routeur. Un trop grand nombre de traductions peut avoir un impact sur les performances du routeur.

Ceci est un exemple de sortie de la commande show ip nat translations :

     router#show ip nat translations
     Pro Inside global    Inside local    Outside local    Outside global
     --- 172.16.131.1     10.10.10.1      ---              ---

commande show align

Cette commande n'est disponible que sur les plates-formes basées sur les processeurs d'ordinateur à jeu d'instructions réduit (RISC). Sur ces plates-formes, le CPU peut corriger les lectures et écritures mémoire mal alignées. Voici un exemple de sortie :

 Alignment data for: 
 4500 Software (C4500-DS40-M), Version mis-aligned RELEASE SOFTWARE (fc1) 
 Compiled Tue 31-Mar-98 15:05 by jdoe

 Total Corrections 33911, Recorded 2, Reads 33911, Writes 0 

 Initial Initial 
 Address Count Access Type Traceback 
 40025F4D 15561 16bit read 0x606F4A7C 0x601C78F8 0x6012FE94 0x600102C0 
 40025F72 18350 32bit read 0x606FB260 0x6013113C 0x600102C0 0x60010988 

commande show version

Afin de suivre les problèmes d'utilisation élevée du CPU, la partie importante de cette sortie de commande est la version du logiciel Cisco IOS, la plate-forme, le type de CPU et la disponibilité du routeur. La référence des commandes donne une explication détaillée de la commande show version.

commande show log

Cette commande affiche le contenu des messages de journal en mémoire tampon. Pour plus d'informations sur la journalisation des messages système, référez-vous à la section Journaliser les messages d'erreur système du guide Résolution des problèmes de configuration du routeur.

Script shell UNIX pour collecter périodiquement des données

Cette annexe décrit un script simple pour collecter périodiquement des données du routeur. Le noyau du script est cette ligne :

  (echo "show version") | telnet 192.168.1.1

La commande entre parenthèses est exécutée dans une nouvelle fenêtre de ligne de commande et la sortie est envoyée à une session Telnet. Ceci est un exemple de script pour capturer les sorties des commandes show version et show processes cpu :

     #!/opt/local/bin/bash

     ########################################### 
     # Router's IP address 
     # 
     IP_ADDRESS='10.200.40.53' 
       

     # Directory where the log files will be stored 
     # 
     DIR=/var/log/router 

     ######################################## 

     if [ ! -e $DIR ] 
     then 
       mkdir $DIR 
     fi 

     # Tag specification: mmddhhmm 
     DATE=`date +'%m%d'` 
     TIME=`date +'%H%M'` 
     TAG=$DATE$TIME 

     # Collect data from the router 
     (echo "foo";\ 
     echo "bar";\ 
     echo "term len 0";\ 
     echo "show version";\ 
     echo "show processes cpu";\ 
     echo "term len 15";\ 
     echo "show memory summary";\ 
     echo "q";\ 
     sleep 30)|telnet $IP_ADDRESS > $DIR/info.$TAG 2>$DIR/info.$TAG.msg 

Remarque: Dans ce script, toutes les données, y compris le mot de passe, sont envoyés au format texte clair.

Dans la première section, vous devez spécifier l'adresse IP et le répertorier de destination pour les fichiers de journalisation. La deuxième section contient les commandes réelles qui sont envoyées au routeur. La première est le nom d'utilisateur, puis le mot de passe, etc. Une astuce pour capturer seulement les premières lignes de sortie de certaines commandes est incluse. La longueur du terminal est paramétrée comme quelque chose de court (15 dans ce cas), et la lettre « q » est envoyée seulement par demande.

Si des données sont collectées périodiquement, la sortie de la commande show version montre si le problème a une nature périodique, par exemple, s'il apparaît toujours à une certaine heure ou durant un jour particulier de la semaine. Si vous devez rassembler la sortie de plus de commandes, elles peuvent être ajoutées au script de la même manière que celles montrées dans l'exemple. Si vous devez tronquer la sortie envoyée vers le fichier, augmentez d'abord la période de veille (la commande Sleep entre parenthèses).

Exécutez ce script toutes les cinq minutes si le problème d'utilisation élevée du CPU apparaît souvent et ne dure pas longtemps. Autrement, vous pouvez l'exécuter toutes les 15 ou 30 minutes. Pour une facilité d'utilisation, sauvegardez le script dans un fichier tel que /usr/bin/router-script. Puis, pour l'exécuter toutes les cinq minutes, ajoutez la ligne suivante au fichier /etc/crontab :

     */5       *       *       *       *       /usr/bin/router-script

Relancez le serveur cron. Si vous n'avez pas les droits pour modifier le fichier /etc/crontab, exécutez le script dans un processus distinct, comme ceci :

     while [ 1 ]; do ./router-script ; sleep 300; done &

Conversations connexes de la communauté de soutien de Cisco

Le site Cisco Support Community est un forum où vous pouvez poser des questions, répondre à des questions, faire part de suggestions et collaborer avec vos pairs.


Informations connexes


Document ID: 15095