本文以CentOS 6.5 64位操作系統(tǒng)為背景,探討服務(wù)器Linux系統(tǒng)中CPU持續(xù)高負(fù)載或網(wǎng)絡(luò)帶寬占滿時的排查思路。資源異常會直接影響系統(tǒng)穩(wěn)定性及業(yè)務(wù)連續(xù)性,需通過系統(tǒng)級工具定位問題根源,采取針對性措施恢復(fù)服務(wù)。
當(dāng)系統(tǒng)CPU占用率異常時,可通過以下步驟定位并處理問題:
1. 系統(tǒng)負(fù)載實時監(jiān)控
`top`命令是核心監(jiān)控工具,其輸出首行顯示系統(tǒng)運行時間(如“up 27 days, 3:13”)、當(dāng)前登錄用戶數(shù)及負(fù)載均值(“l(fā)oad average: 0.02, 0.03, 0.05”),與`uptime`命令結(jié)果一致,反映系統(tǒng)1/5/15分鐘內(nèi)的平均負(fù)載;第三行“%Cpu(s)”則展示CPU細(xì)分使用情況(用戶態(tài)us、系統(tǒng)態(tài)sy、空閑id等),需重點關(guān)注“id”值過低或“us”“sy”過高的情況。
2. 高CPU進(jìn)程定位
在`top`界面按“P”鍵可按CPU使用率降序排列進(jìn)程,快速定位占用資源的前PID(如“%CPU”列異常值);若需分析內(nèi)存占用,按“M”鍵按內(nèi)存排序;多核環(huán)境下按“1”可查看各核心獨立負(fù)載。通過`ll /proc/PID/exe`可明確進(jìn)程對應(yīng)的可執(zhí)行文件路徑,避免誤終止系統(tǒng)關(guān)鍵進(jìn)程。
3. 異常進(jìn)程處理
確認(rèn)異常進(jìn)程后,在`top`界面按“k”鍵輸入進(jìn)程PID,發(fā)送信號終止(默認(rèn)為15/SIGTERM,優(yōu)雅退出進(jìn)程);若進(jìn)程無響應(yīng),可改用`kill -9 `強(qiáng)制終止(需謹(jǐn)慎,可能導(dǎo)致數(shù)據(jù)丟失)。處理前需結(jié)合業(yè)務(wù)邏輯判斷進(jìn)程合法性,避免誤殺業(yè)務(wù)進(jìn)程。
4. 內(nèi)存輔助排查
結(jié)合`free -h`查看系統(tǒng)內(nèi)存總量、已用及空閑情況,`ps -aux --sort=-%mem`按內(nèi)存占用排序進(jìn)程,排查是否因內(nèi)存不足觸發(fā)頻繁 swapping(交換分區(qū)使用),間接導(dǎo)致CPU sys升高。內(nèi)存不足時,可嘗試重啟非核心服務(wù)(如Apache)或服務(wù)器釋放資源。
當(dāng)外網(wǎng)帶寬被占滿導(dǎo)致SSH連接異常時,需通過本地操作定位流量來源:
1. 流量實時監(jiān)控
使用`iftop -i -P`(如“eth1”)查看實時流量,按“P”鍵顯示端口連接,“n”切換IP/主機(jī)名模式。重點關(guān)注“=>”發(fā)送流量、“<=”接收流量異常高的IP及端口(如“53139端口與115.205.150.235建立連接”)。
2. 進(jìn)程與端口關(guān)聯(lián)
通過`netstat -tunlp |grep `(如“53139”)定位占用端口的進(jìn)程(如“vsftpd”),判斷是否為正常業(yè)務(wù)流量(如FTP服務(wù))或惡意連接(如DDoS攻擊)。
3. 流量控制措施
若為惡意IP,可通過`iptables -I INPUT -s -j DROP`屏蔽地址;若為正常業(yè)務(wù)流量超限,可配置`iptables`限速(如`iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/s -j ACCEPT`);若為服務(wù)異常(如vsftpd配置缺陷),建議停止服務(wù)并優(yōu)化配置。