發(fā)布時(shí)間:2019-04-22 瀏覽次數(shù):3026
系統(tǒng)為 CentOS 6.5 64 位操作系統(tǒng)
服務(wù)器 Linux 系統(tǒng)的 CPU 持續(xù)跑高,會(huì)對系統(tǒng)穩(wěn)定性和業(yè)務(wù)運(yùn)行造成影響。對 CPU 占用率較高問題的排查分析思路作參考。
查看系統(tǒng)常用命令為
ps -aux ps-ef iftop Top
top 命令來查看系統(tǒng)的負(fù)載問題,并定位耗用較多 CPU 資源的進(jìn)程
如CPU或網(wǎng)絡(luò)異常時(shí),通常無法通過 SSH 進(jìn)行遠(yuǎn)程連接,建議您通過業(yè)務(wù)后臺(tái)管理功能中視圖操作進(jìn)行連接
通過 top 命令查看系統(tǒng)當(dāng)前的運(yùn)行情況。
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
針對負(fù)載問題,只需關(guān)注回顯的第一行和第三行信息,詳細(xì)說明如下。
top 命令的第一行顯示的內(nèi)容 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05 依次為 系統(tǒng)當(dāng)前時(shí)間 、系統(tǒng)到目前為止已運(yùn)行的時(shí)間、當(dāng)前登錄系統(tǒng)的用戶數(shù)量、系統(tǒng)負(fù)載,這與直接執(zhí)行 uptime 命令查詢結(jié)果一致。
top 命令的第三行會(huì)顯示當(dāng)前 CPU 資源的總體使用情況,下方會(huì)顯示各個(gè)進(jìn)程的資源占用情況。
通過字母鍵 P,可以對 CPU 使用率進(jìn)行倒序排列,進(jìn)而定位系統(tǒng)中占用 CPU 較高的進(jìn)程。說明:通過字母鍵 M, 您可以對系統(tǒng)內(nèi)存使用情況進(jìn)行排序。如果有多核 CPU,數(shù)字鍵 1 可以顯示每核 CPU 的負(fù)載狀況。
通過 ll /proc/PID/exe 可以查看每個(gè)進(jìn)程 ID 對應(yīng)的程序文件
1.CPU 的跑滿或跑高,在確認(rèn)具體的進(jìn)程結(jié)果后,針對異常的進(jìn)程,您需要通過 top 命令將其終止若您想要終止某個(gè)進(jìn)程,只需按下小寫的 k 鍵
2.輸入想要終止的進(jìn)程 PID (top 輸出結(jié)果的第一列)。例如,若您想要終止 PID 為 86 的進(jìn)程,輸入 86 后按回車即可
3.操作成功后,界面會(huì)出現(xiàn)類似 Send pid 86 signal [15/sigterm] 的提示信息,按回車確認(rèn)即可。
異常的名字進(jìn)程占用高CPU高
可以通過 free 、ps 等指令進(jìn)一步查詢系統(tǒng)及系統(tǒng)內(nèi)進(jìn)程的內(nèi)存占用情況,做進(jìn)一步排查分析。針對系統(tǒng)當(dāng)前內(nèi)存不足的問題,您可以重啟服務(wù)器或WEB服務(wù)如 Apache,釋放內(nèi)存
iftop 工具排查
服務(wù)器外網(wǎng)帶寬被占滿時(shí),如果通過遠(yuǎn)程無法登陸,本地進(jìn)入到服務(wù)器內(nèi)部,運(yùn)行下面命令查看流量占用情況
iftop -i eth1(網(wǎng)卡名稱) -P
圖中,您可以查看到流量高耗的是服務(wù)器上 53139 端口和 115.205.150.235 地址建立的連接執(zhí)行 netstat 命令反查 53139 端口對應(yīng)的進(jìn)程
netstat -tunlp |grep 53139
經(jīng)查,服務(wù)器上 vsftpd 服務(wù)產(chǎn)生大量流量,您可以通過停止服務(wù)或使用 iptables 服務(wù)來對指定地址進(jìn)行處理,如屏蔽 IP 地址或限速,以保證服務(wù)器帶寬能夠正常使用
若進(jìn)程確定是惡意程序,可以通過執(zhí)行 kill -TERM <PID> 來終止程序運(yùn)行
如通過查看為WEB服務(wù)進(jìn)程占用,通過下載網(wǎng)站日志分析是否為正常的IP訪問,如正常訪問可升級帶寬再觀察。