In diesem Dokument werden die Prozesse von Exec und Virtual Exec sowie die Fehlerbehebung bei hoher CPU-Auslastung in diesen Prozessen erläutert.
Cisco empfiehlt, dass Sie vor dem Fortfahren mit diesem Dokument Troubleshooting High CPU Utilization on Cisco Routers (Fehlerbehebung bei hoher CPU-Auslastung auf Cisco Routern) lesen.
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-Leitungen (Konsole, Hilfsaggregat, asynchron) des Routers verantwortlich. Der Virtual Exec-Prozess ist für die VTY-Leitungen (Telnet-Sitzungen) zuständig.
Bei den Prozessen von Exec und Virtual Exec handelt es sich um 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 Erläuterung der Ausgabe dieses Befehls finden Sie unter Der Befehl show processes.
Wenn viele Daten über diese Sitzungen übertragen werden, erhöht sich die CPU-Auslastung für den Exec-Prozess.
Der Grund hierfür ist, dass der Router einige CPU-Ressourcen verwendet, wenn er ein einfaches Zeichen über diese Zeilen senden möchte:
Für die Konsole (Exec) verwendet der Router einen Interrupt pro Zeichen.
Das Konsolen-Interrupt 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-Leitung (Virtual Exec) muss die Telnet-Sitzung ein TCP-Paket erstellen und die Zeichen an den Telnet-Client senden.
Hier sind einige mögliche Gründe für eine hohe CPU-Auslastung im Exec-Prozess aufgelistet:
Zu viele Daten werden über den Konsolenport gesendet.
Zu viele vom Router generierte Konsolenmeldungen sind eine mögliche Ursache.
Überprüfen Sie mit dem Befehl show debugging, ob Debugging auf dem Router gestartet wurde.
Deaktivieren Sie die Konsolenprotokollierung auf dem Router mit (keine Protokollierungskonsole ).
Überprüfen Sie, ob eine lange Ausgabe auf der Konsole ausgegeben wird (z. B. ein Show-Tech-Support oder ein Show-Memory ).
Die Cisco IOS Software weist einen Fehler auf.
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 enthält, sollte der Exec-Prozess für diese Leitung deaktiviert werden, da der Exec-Prozess auf dieser Leitung startet, wenn das an diese Leitung angeschlossene Gerät (z. B. ein Modem) einige unangeforderte Daten sendet.
Wenn der Router als Terminalserver (für Reverse-Telnet zu anderen Gerätekonsolen) verwendet wird, wird empfohlen, dass Sie no exec auf den Leitungen konfigurieren, die mit der Konsole der anderen Geräte verbunden sind. Daten, die von der Konsole zurückkommen, können andernfalls einen EXEC-Prozess starten, der CPU-Ressourcen verwendet.
Im Folgenden sind einige mögliche Gründe für die hohe CPU-Auslastung im Virtual Exec-Prozess aufgeführt:
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.
Über die Telnet-Sitzungen werden zu viele Daten gesendet.
Der häufigste Grund für die hohe CPU-Auslastung im Virtual Exec-Prozess ist, dass zu viele Daten vom Router zur 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 durch 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 unterbrochene Telnet-Sitzung führt aufgrund des Virtual Exec-Prozesses zu einer hohen CPU-Auslastung. Um die unterbrochene Telnet-Sitzung zu beenden, muss das Gerät in den meisten Fällen neu geladen werden. Die andere Möglichkeit zum Löschen der unterbrochenen Telnet-Sitzung 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
Aus der obigen Ausgabe muss der TCP-Prozess 02FA62D0 gelöscht werden, um die angehaltene Telnet-Sitzung mit dem Befehl clear tcp tcb 0x02fa62d0 zu löschen.
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
12-Dec-2008 |
Erstveröffentlichung |