Linux操作系統帶寬、CPU跑滿或跑高排查思路
系統為 CentOS 6.5 64 位操作系統
服務器 Linux 系統的 CPU 持續跑高,會對系統穩定性和業務運行造成影響。對 CPU 占用率較高問題的排查分析思路作參考。
查看系統常用命令為
ps -aux ps-ef iftop Top
top 命令來查看系統的負載問題,并定位耗用較多 CPU 資源的進程
如CPU或網絡異常時,通常無法通過 SSH 進行遠程連接,建議您通過業務后臺管理功能中視圖操作進行連接
通過 top 命令查看系統當前的運行情況。
top - 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05
Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.1 st
KiB Mem: 1016656 total, 946628 used, 70028 free, 169536 buffers
KiB Swap: 0 total, 0 used, 0 free. 448644 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 41412 3824 2308 S 0.0 0.4 0:19.01 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd
針對負載問題,只需關注回顯的第一行和第三行信息,詳細說明如下。
top 命令的第一行顯示的內容 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05 依次為 系統當前時間 、系統到目前為止已運行的時間、當前登錄系統的用戶數量、系統負載,這與直接執行 uptime 命令查詢結果一致。
top 命令的第三行會顯示當前 CPU 資源的總體使用情況,下方會顯示各個進程的資源占用情況。
通過字母鍵 P,可以對 CPU 使用率進行倒序排列,進而定位系統中占用 CPU 較高的進程。說明:通過字母鍵 M, 您可以對系統內存使用情況進行排序。如果有多核 CPU,數字鍵 1 可以顯示每核 CPU 的負載狀況。
通過 ll /proc/PID/exe 可以查看每個進程 ID 對應的程序文件
1.CPU 的跑滿或跑高,在確認具體的進程結果后,針對異常的進程,您需要通過 top 命令將其終止若您想要終止某個進程,只需按下小寫的 k 鍵
2.輸入想要終止的進程 PID (top 輸出結果的第一列)。例如,若您想要終止 PID 為 86 的進程,輸入 86 后按回車即可
3.操作成功后,界面會出現類似 Send pid 86 signal [15/sigterm] 的提示信息,按回車確認即可。
異常的名字進程占用高CPU高
圖片1.png
可以通過 free 、ps 等指令進一步查詢系統及系統內進程的內存占用情況,做進一步排查分析。針對系統當前內存不足的問題,您可以重啟服務器或WEB服務如 Apache,釋放內存
iftop 工具排查
服務器外網帶寬被占滿時,如果通過遠程無法登陸,本地進入到服務器內部,運行下面命令查看流量占用情況
iftop -i eth1(網卡名稱) -P
圖片2.png
圖中,您可以查看到流量高耗的是服務器上 53139 端口和 115.205.150.235 地址建立的連接執行 netstat 命令反查 53139 端口對應的進程
netstat -tunlp |grep 53139
圖片3.png
經查,服務器上 vsftpd 服務產生大量流量,您可以通過停止服務或使用 iptables 服務來對指定地址進行處理,如屏蔽 IP 地址或限速,以保證服務器帶寬能夠正常使用
若進程確定是惡意程序,可以通過執行 kill -TERM <PID> 來終止程序運行
如通過查看為WEB服務進程占用,通過下載網站日志分析是否為正常的IP訪問,如正常訪問可升級帶寬再觀察。
來源:景安