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