In diesem Dokument werden die Exec- und Virtual Exec-Prozesse erläutert, und es wird erläutert, wie die hohe CPU-Auslastung in diesen Prozessen behoben wird.
Cisco empfiehlt, dass Sie die Fehlerbehebung bei hoher CPU-Auslastung auf Cisco Routern lesen, bevor Sie mit diesem Dokument fortfahren.
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 sich Ihr Netzwerk in der Produktionsumgebung befindet, müssen Sie sich bei jedem Befehl zunächst dessen potenzielle Auswirkungen vor Augen führen.
Weitere Informationen zu Dokumentkonventionen finden Sie unter Cisco Technical Tips Conventions (Technische Tipps von Cisco zu Konventionen).
Der Exec-Prozess in der Cisco IOS®-Software ist für die Kommunikation auf den tty-Zeilen (Konsole, Hilfsmittel, asynchron) des Routers verantwortlich. Der Virtual Exec-Prozess ist für die vty-Zeilen (Telnet-Sitzungen) verantwortlich.
Die Exec- und Virtual Exec-Prozesse sind Prozesse mit mittlerer Priorität. Wenn es also andere Prozesse mit höherer Priorität (hoch oder kritisch) gibt, erhalten die Prozesse mit höherer Priorität die CPU-Ressourcen.
router#show process | i CPU|Exec CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 0% PID QTy PC Runtime (ms) Invoked uSecs Stacks TTY Process 22 M* 0 9644 1733 5564 9732/12000 0 Exec 46 ME 80468980 28 6 466610520/12000 66 Virtual Exec
Eine vollständige Erklärung der Ausgabe dieses Befehls finden Sie unter Befehl show process Command.
Wenn viele Daten durch diese Sitzungen übertragen werden, nimmt die CPU-Auslastung für den Exec-Prozess zu.
Wenn der Router ein einfaches Zeichen durch diese Leitungen senden möchte, verwendet der Router einige CPU-Ressourcen:
Für die Konsole (Exec) verwendet der Router einen Interrupt pro Zeichen.
Die Konsolenunterbrechung wird in der Befehlsausgabe show stacks angezeigt:
router#show stacks Minimum process stacks: Free/Size Name 11516/12000 Router Init 9404/12000 Init 5520/6000 AIM_MIB_CREATION 5448/6000 RADIUS INITCONFIG 9728/12000 Virtual Exec Interrupt level stacks: Level Called Unused/Size Name 1 23035463 7008/9000 Network interfaces 2 0 9000/9000 Timebase Reference Interrupt 3 0 9000/9000 PA Management Int Handler 6 9791 8892/9000 16552 Con/Aux Interrupt 7 1334963882 8920/9000 MPC860 TIMER INTERRUPT
Für die VTY-Zeile (Virtual Exec) muss die Telnet-Sitzung ein TCP-Paket erstellen und die Zeichen an den Telnet-Client senden.
Im Folgenden sind einige mögliche Gründe für eine hohe CPU-Auslastung im Exec-Prozess aufgeführt:
Über den Konsolenport werden zu viele Daten gesendet.
Eine mögliche Ursache hierfür sind zu viele vom Router generierte Konsolenmeldungen.
Überprüfen Sie, ob auf dem Router mit dem Befehl show debugging (Debuggen anzeigen) Debug gestartet wurde.
Deaktivieren Sie die Konsolenprotokollierung auf dem Router mit (keine Protokollkonsole).
Überprüfen Sie, ob eine lange Ausgabe auf der Konsole ausgegeben wird (z. B. ein show tech-support oder ein show memory).
In der Cisco IOS-Software ist ein Fehler aufgetreten.
Verwenden Sie das Bug Toolkit (nur registrierte Kunden), um nach Fehlern mit diesem Symptom in Ihrer Cisco IOS-Softwareversion zu suchen.
Der Befehl exec wird für asynchrone und Hilfslinien konfiguriert.
Wenn eine Leitung nur ausgehenden Datenverkehr hat, sollte der Exec-Prozess für diese Leitung deaktiviert werden. Wenn das an diese Leitung angeschlossene Gerät (z. B. ein Modem) unaufgeforderte Daten sendet, beginnt der Exec-Prozess für diese Leitung.
Wenn der Router als Terminalserver (für umgekehrtes Telnet zu anderen Gerätekonsolen) verwendet wird, wird empfohlen, keine Exec-Konfiguration für die Leitungen zu konfigurieren, die mit der Konsole der anderen Geräte verbunden sind. Daten, die von der Konsole zurückgegeben werden, können ansonsten einen EXEC-Prozess starten, der CPU-Ressourcen verwendet.
Im Folgenden sind einige mögliche Gründe für eine hohe CPU-Auslastung im Virtual Exec-Prozess aufgeführt:
Ein Softwarefehler in der Cisco IOS-Software
Verwenden Sie das Bug Toolkit (nur registrierte Kunden), um nach Fehlern mit diesem Symptom für Ihre Cisco IOS-Softwareversion zu suchen.
In den Telnet-Sitzungen werden zu viele Daten gesendet.
Der häufigste Grund für eine hohe CPU-Auslastung im Virtual Exec-Prozess ist, dass zu viele Daten vom Router an die Telnet-Sitzung übertragen werden.
Dies kann passieren, wenn Befehle mit langen Ausgaben (wie show tech-support, show memory usw.) von der Telnet-Sitzung ausgeführt werden.
Die Datenmenge, die über jede VTY-Sitzung übertragen wird, kann mit dem Befehl show tcp überprüft werden:
router#show tcp vty 0
tty66, virtual tty from host 10.48.77.64
Connection state is ESTAB, I/O status: 1, unread input bytes: 1
Local host: 10.48.77.27, Local port: 23
Foreign host: 10.48.77.64, Foreign port: 11006
........
Datagrams (max data segment is 1460 bytes):
Rcvd: 525 (out of order: 0), with data: 53, total data bytes: 87
Sent: 366 (retransmit: 257, fastretransmit: 0), with data: 356, total data bytes:
158187
Eine Sitzung ohne Telnet führt aufgrund des Virtual Exec-Prozesses zu einer hohen CPU. Um die unterbrochene Telnet-Sitzung zu löschen, muss das Gerät in den meisten Fällen neu geladen werden. Die andere Möglichkeit, die aufgehängte Telnet-Sitzung zu löschen, besteht darin, den TCP-Prozess zu löschen. Der TCP-Prozess kann mit dem Befehl show tcp brief wie in dieser Ausgabe identifiziert werden:
Router#show tcp brief TCB Local Address Foreign Address (state) 02FA62D0 172.16.152.75.23 dhcp-171-69-104-.3013 ESTAB
Von der oben angegebenen Ausgabe muss der TCP-Prozess 02FA62D0 gelöscht werden, um die nicht mehr reagierende Telnet-Sitzung mit dem Befehl clear tcp tcb 0x02fa62d0 zu löschen.
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
12-Dec-2008 |
Erstveröffentlichung |