本文檔介紹Exec和虛擬Exec進程,以及如何解決這些進程中的CPU使用率過高問題。
Cisco建議您在繼續閱讀本文檔之前首先閱讀對Cisco路由器上的CPU使用率過高進行故障排除。
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您在即時網路中工作,請確保在使用任何命令之前瞭解其潛在影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
Cisco IOS®軟體中的Exec過程負責路由器的tty線路(控制檯、輔助、非同步)上的通訊。虛擬Exec進程負責vty線路(telnet會話)。
Exec和虛擬Exec進程是中優先順序進程,因此,如果存在優先順序更高的其他進程(高優先順序或關鍵優先順序),優先順序更高的進程將獲得CPU資源。
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
有關此命令輸出的完整解釋,請參閱show processes命令。
如果透過這些會話傳輸了大量資料,則Exec進程的CPU使用率會增加。
這是因為當路由器要透過這些行傳送簡單字元時,會使用一些CPU資源:
對於控制檯(Exec),路由器對每個字元使用一個中斷。
在show stacks命令輸出中可以看到控制檯中斷:
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
對於vty線路(虛擬Exec),telnet會話必須構建TCP資料包並將字元傳送到telnet客戶端。
下面列出了Exec進程中CPU使用率過高的一些可能原因:
透過控制檯埠傳送的資料過多。
可能的原因是路由器生成的控制檯消息過多。
請檢視是否已使用show debugging命令在路由器上啟動了任何調試。
使用(no logging console )在路由器上停用控制檯日誌記錄。
驗證控制檯上是否列印輸出很長(例如,show tech-support或show memory)。
Cisco IOS軟體存在bug。
exec命令是為非同步和輔助線路配置的。
如果一條線路只有傳出流量,則應該停用此線路的Exec進程,因為如果連線到此線路的裝置(例如數據機)傳送一些未經請求的資料,則Exec進程將在此線路上啟動。
如果路由器用作終端伺服器(用於反向telnet到其他裝置控制檯),建議在連線到其他裝置控制檯的線路上配置no exec。從控制檯返回的資料可能會啟動使用CPU資源的EXEC進程。
下面列出了虛擬Exec進程中CPU使用率較高的一些可能原因:
Cisco IOS軟體中的軟體Bug
透過telnet會話傳送的資料過多。
在虛擬Exec進程中,CPU使用率較高的最常見原因是從路由器向Telnet會話傳輸的資料過多。
從telnet會話執行具有較長輸出的命令(例如show tech-support、show memory等)時,可能出現這種情況。
透過show tcp命令可以驗證透過每個vty會話傳輸的資料量:
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
由於虛擬Exec進程,掛起Telnet會話會導致高CPU使用率。要清除掛起的telnet會話,大多數情況下需要重新載入裝置。清除停滯的telnet會話的另一種方法是清除TCP進程。透過show tcp brief命令可以確認TCP進程,如下面輸出所示:
Router#show tcp brief TCB Local Address Foreign Address (state) 02FA62D0 172.16.152.75.23 dhcp-171-69-104-.3013 ESTAB
依據以上輸出,需要透過clear tcp tcb 0x02fa62d0命令清除TCP進程02FA62D0才能清除掛起的Telnet會話。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
12-Dec-2008 |
初始版本 |