引言:在日常網(wǎng)絡(luò)管理中,CPU使用率高簡(jiǎn)稱High CPU的問題會(huì)經(jīng)常碰到。通常CPU進(jìn)程高分中斷高和進(jìn)程高。中斷高大多是由于實(shí)時(shí)的流量造成的,通過查詢端口流量,處理相對(duì)容易,日常網(wǎng)管工作中,進(jìn)程高,特別是IP Input進(jìn)程引起的High CPU會(huì)時(shí)有發(fā)生。這里結(jié)合筆者最近剛剛處理的一起IP Input進(jìn)程引起的High CPU問題,進(jìn)行總結(jié)分析。
最近在一次日常工作中,突然接到某臺(tái)匯聚設(shè)備Cisco 6506短信告警。立刻遠(yuǎn)程登錄該設(shè)備,運(yùn)行show processes cpu sorted,發(fā)現(xiàn)CPU利用率已經(jīng)高達(dá)99%,IP Input進(jìn)程占了73%。正常情況下,該設(shè)備的CPU使用率都在10%以下。
圖1 用show interface summary查看端口流量
1.執(zhí)行show interface或 show interface summary,查看哪些端口有較多的流量轉(zhuǎn)發(fā),以及這些接口是使用何種轉(zhuǎn)發(fā)機(jī)制。建議執(zhí)行本步驟之前,先執(zhí)行clear counters,對(duì)計(jì)數(shù)進(jìn)行清零,便于觀察流量的增長(zhǎng)情況。
筆者喜歡用show interface summary,相對(duì)簡(jiǎn)潔易看(如圖1)。這里重點(diǎn)關(guān)注RXBS和RXPS兩個(gè)指標(biāo)的值,分別是每秒端口輸入流量和數(shù)據(jù)包數(shù)。筆者發(fā)現(xiàn),24號(hào)端口RXPS數(shù)為34241,遠(yuǎn)遠(yuǎn)大于同類型端口。查看端口配置發(fā)現(xiàn),該端口為級(jí)聯(lián)端口,進(jìn)入該端口shutdown,CPU使用率立刻恢復(fù)正常。
故障基本可以確定是該端口下聯(lián)設(shè)備所導(dǎo)致,聯(lián)系下聯(lián)單位網(wǎng)管處理即可。本著更加負(fù)責(zé)任的態(tài)度,決定揪出最終的“兇手”。
2.show ip traffic的輸入,可以告訴我們是哪類流量增長(zhǎng)最快,之后再檢查一下這類流量是否需要上送CPU做進(jìn)一步處理,就能得出大致結(jié)論,High CPU問題是哪類流量導(dǎo)致的。
3. 執(zhí) 行debug ip packet detail,更直接查看到底是什么樣的報(bào)文上送到CPU出 發(fā)CPU High,在執(zhí)行該命令之前,建議在配置模式下先執(zhí)行no logging console和no logging monitor。
執(zhí)行完debug ip packet detail后3到5秒,立刻輸入undebug all命令停止。
4.使用show logging查看結(jié)果,筆者發(fā)現(xiàn)某網(wǎng)段下兩臺(tái)主機(jī)以每2ms的速度發(fā)源端口為14001,目的地址為255.255.255.255,目的端口隨機(jī)的UDP廣播包。通過查詢廣播主機(jī)MAC地址對(duì)應(yīng)的端口,正是第一步查到的24口,也驗(yàn)證了第一步的結(jié)果。
找到“病根”問題自然好解決。有兩種方法,第一種“簡(jiǎn)單粗暴法”,shutdown端口,通知故障單位網(wǎng)管,下聯(lián)設(shè)備所屬單位網(wǎng)管找到問題主機(jī)解決后,再回復(fù)。我們采用第二種:做ACL,只需要輸入兩條deny udp any eq 14001 any,permit ip any any,在故障端口24口in方向上應(yīng)用。再次輸入show processes cpu查看,恢復(fù)正常。
在IOS中我們把SW process叫做IP Iput進(jìn)程,簡(jiǎn)而言之就是數(shù)據(jù)報(bào)文沒有被硬件switching cache或者CEF處理,而是punt到CPU去做進(jìn)一步的處理。
在我們?nèi)粘>W(wǎng)絡(luò)運(yùn)維中,處理High CPU問題,除了采用我們上面的方法外,還可以依據(jù)實(shí)際情況用以下方式解決:如果您經(jīng)驗(yàn)豐富去現(xiàn)場(chǎng)又方便,可以用Sniffer或Wireshark進(jìn)行抓包;如果網(wǎng)絡(luò)基礎(chǔ)薄弱可以采取依次shutdown端口等同于現(xiàn)場(chǎng)依次拔網(wǎng)線,觀察CPU的占用情況,從而發(fā)現(xiàn)故障端口。