在使用Linux 系統(tǒng)時,經(jīng)常會遇到 CPU 占用率太高的問題 。此篇文章教你如何解決,排查解決的思路是什么
CPU負載查看方法:
使用查看系統(tǒng)維度的CPU負載
使用top查看進程維度的CPU負載
【Linux 系統(tǒng) CPU 占用率太高?】使用查看系統(tǒng)緯度的 CPU 負載:
可以通過從系統(tǒng)維度查看 CPU 資源的使用情況 。
用法說明:
格式: -n 1# -n 1 表示結(jié)果一秒刷新一次 。示例輸出:
[root@wangerxiao ~]# vmstat -t 1procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp----- r b swpd free buff cache si so bi bo in cs us sy id wa st CST 3 0 0 5910832 134096 3931732 0 0 0 1 0 1 0 0 100 0 0 2016-11-13 19:57:36 0 0 0 5910816 134096 3931732 0 0 0 0 274 511 0 0 100 0 0 2016-11-13 19:57:37 0 0 0 5910816 134096 3931732 0 0 0 0 283 506 0 0 100 0 0 2016-11-13 19:57:38
回顯說明:
返回結(jié)果中的主要數(shù)據(jù)列說明:
使用 top 查看進程緯度的 CPU 負載:
可以通過 top 從進程緯度來查看其 CPU、內(nèi)存等資源的使用情況 。
用法說明:格式:top示例輸出
[root@wangerxiao ~]# toptop - 20:02:37 up 35 days, 23:33, 2 users, load average: 0.00, 0.01, 0.05Tasks: 296 total, 1 running, 295 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 12139008 total, 5998320 free, 2074896 used, 4065792 buff/cacheKiB Swap: 2098172 total, 2098172 free, 0 used. 9739056 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND1006 influxdb 20 0 5001836 332224 11568 S 1.0 2.7 1172:51 influxd3578 icinga 20 0 1399032 12792 5152 S 0.3 0.1 136:59.57 icinga2 30207 root 20 0 40800 2120 1328 R 0.3 0.0 0:00.10 top1 root 20 0 196848 11904 2348 S 0.0 0.1 7:32.27 systemd2 root 20 0 0 0 0 S 0.0 0.0 0:02.22 kthreadd3 root 20 0 0 0 0 S 0.0 0.0 0:00.71 ksoftirqd/05 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H7 root rt 0 0 0 0 S 0.0 0.0 0:01.43 migration/08 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/010 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/111 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/212 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/313 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4
回顯說明:
默認界面上第三行會顯示當前 CPU 資源的總體使用情況,下方會顯示各個進程的資源占用情況 。
可以直接在界面輸入大小字母 P,來使監(jiān)控結(jié)果按 CPU 使用率倒序排列,進而定位系統(tǒng)中占用 CPU 較高的進程 。最后,根據(jù)系統(tǒng)日志和程序自身相關(guān)日志,對相應(yīng)進程做進一步排查分析,以判斷其占用過高 CPU 的原因 。
操作案列:使用top直接終止CPU消耗較大的進程
如前面所述,可以通過 top 命令查看系統(tǒng)的負載問題linux查看當前系統(tǒng)負載信息,并定位耗用較多 CPU 資源的進程 。
可以直接在 top 運行界面快速終止相應(yīng)的異常進程 。說明如下:
1 , 想要終止某個進程,只需按下小寫的 k 鍵 。
2,輸入想要終止的進程 PID (top 輸出結(jié)果的第一列) 。比如 , 如下圖所示,假如想要終止 PID 為 23 的進程 , 輸入 23 后按回車 。
3,如下圖所示 , 操作成功后,界面會出現(xiàn)類似 “Send pid 23[15/]” 的提示信息讓用戶進行確認 。按回車確認即可
CPU使用率較低但負載較高
問題描述:
Linux 系統(tǒng)沒有業(yè)務(wù)程序運行l(wèi)inux查看當前系統(tǒng)負載信息,通過 top 觀察,類似如下圖所示,CPU 很空閑 , 但是 load卻非常高:
處理辦法:
load是對 CPU 負載的評估,其值越高,說明其任務(wù)隊列越長,處于等待執(zhí)行的任務(wù)越多 。
出現(xiàn)此種情況時,可能是由于僵死進程導(dǎo)致的 ??梢酝ㄟ^指令 ps -axjf 查看是否存在 D 狀態(tài)進程 。
D 狀態(tài)是指不可中斷的睡眠狀態(tài) 。該狀態(tài)的進程無法被 kill,也無法自行退出 。只能通過恢復(fù)其依賴的資源或者重啟系統(tǒng)來解決 。
進程占用 CPU 較高
操作系統(tǒng)都用分頁機制來管理物理內(nèi)存,操作系統(tǒng)將磁盤的一部分劃出來作為虛擬內(nèi)存,由于內(nèi)存的速度要比磁盤快得多,所以操作系統(tǒng)要按照某種換頁機制將不需要的頁面換到磁盤中,將需要的頁面調(diào)到內(nèi)存中,由于內(nèi)存持續(xù)不足 , 這個換頁動作持續(xù)進行,是虛擬內(nèi)存管理中負責換頁的,當服務(wù)器內(nèi)存不足的時候會執(zhí)行換頁操作,這個換頁操作是十分消耗主機CPU資源的 。如果通過top發(fā)現(xiàn)該進程持續(xù)處于非睡眠狀態(tài),且運行時間較長,可以初步判定系統(tǒng)在持續(xù)的進行換頁操作 , 可以將問題轉(zhuǎn)向內(nèi)存不足的原因來排查 。
問題描述:
進程占用了系統(tǒng)大量 CPU 資源 。
處理辦法:
Linux 系統(tǒng)通過分頁機制管理內(nèi)存的同時,將磁盤的一部分劃出來作為虛擬內(nèi)存 。而是 Linux 系統(tǒng)虛擬內(nèi)存管理中負責換頁的進程 。當系統(tǒng)內(nèi)存不足時 , 會頻繁的進行換頁操作 。而由于換頁操作非常消耗 CPU 資源,所以會導(dǎo)致該進程持續(xù)占用較高 CPU 資源 。
如果通過 top 等監(jiān)控發(fā)現(xiàn)進程持續(xù)處于非睡眠狀態(tài),且運行時間較長并持續(xù)占用較高 CPU 資源,則通常是由于系統(tǒng)在持續(xù)的進行換頁操作所致 。則可以通過 free 、ps 等指令進一步查詢系統(tǒng)及系統(tǒng)內(nèi)進程的內(nèi)存占用情況,做進一步排查分析 。
本文到此結(jié)束,希望對大家有所幫助 。
- Windows7 64位系統(tǒng)怎么安裝正式版PS
- 生活應(yīng)用及開發(fā)中關(guān)于Windows和Linux系統(tǒng)經(jīng)常使用命令
- Win7系統(tǒng)32位和64位的區(qū)別
- 在windows 7 64位系統(tǒng)里安裝 XP Mode 虛擬機,運行舊軟件程序
- 可能很多人只知道電腦系統(tǒng)分32位和64位,其實在手機上也有相似的
- ?win10開機進不去系統(tǒng)怎么辦
- 文件傳輸 Linux 命令 lpq——想玩轉(zhuǎn)linux就請一直看下去
- Win10系統(tǒng)優(yōu)化及激活,驅(qū)動詳細教程
- Win10系統(tǒng)文件缺損?別再重裝了,來看看大佬是怎么修復(fù)的
- 研維麒麟系統(tǒng)筆記本電腦安裝達夢數(shù)據(jù)庫 飛騰D2000處理器
