linux cpu不足处理运维,Linux运维知识之Linux服务器CPU占用率较高问题排查思路
本文主要向大家介紹了Linux運(yùn)維知識(shí)之Linux服務(wù)器CPU占用率較高問題排查思路,通過具體的內(nèi)容向大家展現(xiàn),希望對(duì)大家學(xué)習(xí)Linux運(yùn)維知識(shí)有所幫助。
注意:本文相關(guān)配置及說明已在?CentOS?6.5?64?位操作系統(tǒng)中進(jìn)行過測(cè)試。其它類型及版本操作系統(tǒng)配置可能有所差異,具體情況請(qǐng)參閱相應(yīng)操作系統(tǒng)官方文檔。
如果云服務(wù)器?ECS?Linux?系統(tǒng)的?CPU?持續(xù)跑高,則會(huì)對(duì)系統(tǒng)穩(wěn)定性和業(yè)務(wù)運(yùn)行造成影響。本文對(duì)?CPU?占用率較高問題的排查分析做簡(jiǎn)要說明。
CPU?負(fù)載查看方法
使用?vmstat?查看系統(tǒng)緯度的?CPU?負(fù)載
可以通過?vmstat?從系統(tǒng)維度查看?CPU?資源的使用情況。
用法說明:
格式:vmstat?-n?1
-n?1?表示結(jié)果一秒刷新一次。
示例輸出:$?vmstat?-n?1procs?—————-memory—————?—-swap—?——-io——?-system—?———cpu——-?r??b???swpd???free???buff??cache???si???so????bi????bo???in???cs?us?sy?id?wa?st?0??0??????0??70352?169448?448452????0????0?????0?????4???10???11??0??0?99??0??0?0??0??????0??70376?169448?448484????0????0?????0?????0??175??406??0??0?100??0??0?0??0??????0??70376?169448?448484????0????0?????0?????0??173??414??0??1?99??0??0?0??0??????0??70376?169448?448484????0????0?????0???128??212??429??3??0?96??1??0^C
回顯說明:
返回結(jié)果中的主要數(shù)據(jù)列說明:
r:?表示系統(tǒng)中?CPU?等待處理的線程。由于?CPU?每次只能處理一個(gè)線程,所以,該數(shù)值越大,通常表示系統(tǒng)運(yùn)行越慢。
us:用戶模式消耗的?CPU?時(shí)間百分比。該值較高時(shí),說明用戶進(jìn)程消耗的?CPU?時(shí)間比較多,比如,如果該值長期超過?50%,則需要對(duì)程序算法或代碼等進(jìn)行優(yōu)化。
sy:內(nèi)核模式消耗的?CPU?時(shí)間百分比。
wa:IO?等待消耗的?CPU?時(shí)間百分比。該值較高時(shí),說明?IO?等待比較嚴(yán)重,這可能磁盤大量作隨機(jī)訪問造成的,也可能是磁盤性能出現(xiàn)了瓶頸。
id:處于空閑狀態(tài)的?CPU?時(shí)間百分比。如果該值持續(xù)為?0,同時(shí)?sy?是?us?的兩倍,則通常說明系統(tǒng)則面臨著?CPU?資源的短缺。
使用?top?查看進(jìn)程緯度的?CPU?負(fù)載
可以通過?top?從進(jìn)程緯度來查看其?CPU、內(nèi)存等資源的使用情況。
用法說明:
格式:top
示例輸出:top?-?17:27:13?up?27?days,??3:13,??1?user,??load?average:?0.02,?0.03,?0.05Tasks:??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?stKiB?Mem:???1016656?total,???946628?used,????70028?free,???169536?buffersKiB?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
回顯說明:
默認(rèn)界面上第三行會(huì)顯示當(dāng)前?CPU?資源的總體使用情況,下方會(huì)顯示各個(gè)進(jìn)程的資源占用情況。
可以直接在界面輸入大小字母?P,來使監(jiān)控結(jié)果按?CPU?使用率倒序排列,進(jìn)而定位系統(tǒng)中占用?CPU?較高的進(jìn)程。最后,根據(jù)系統(tǒng)日志和程序自身相關(guān)日志,對(duì)相應(yīng)進(jìn)程做進(jìn)一步排查分析,以判斷其占用過高?CPU?的原因。
操作案例
使用?top?直接終止?CPU?消耗較大的進(jìn)程
如前面所述,可以通過?top?命令查看系統(tǒng)的負(fù)載問題,并定位耗用較多?CPU?資源的進(jìn)程。
可以直接在?top?運(yùn)行界面快速終止相應(yīng)的異常進(jìn)程。說明如下:
想要終止某個(gè)進(jìn)程,只需按下小寫的?k?鍵。
輸入想要終止的進(jìn)程?PID?(top?輸出結(jié)果的第一列)。比如,如下圖所示,假如想要終止?PID?為?23?的進(jìn)程,輸入?23?后按回車。
如下圖所示,操作成功后,界面會(huì)出現(xiàn)類似?“Send?pid?23?signal?[15/sigterm]”?的提示信息讓用戶進(jìn)行確認(rèn)。按回車確認(rèn)即可。
CPU?使用率較低但負(fù)載較高
問題描述:
Linux?系統(tǒng)沒有業(yè)務(wù)程序運(yùn)行,通過?top?觀察,類似如下圖所示,CPU?很空閑,但是?load?average?卻非常高:
處理辦法:
load?average?是對(duì)?CPU?負(fù)載的評(píng)估,其值越高,說明其任務(wù)隊(duì)列越長,處于等待執(zhí)行的任務(wù)越多。
出現(xiàn)此種情況時(shí),可能是由于僵死進(jìn)程導(dǎo)致的。可以通過指令?ps?-axjf??查看是否存在?D?狀態(tài)進(jìn)程。
D?狀態(tài)是指不可中斷的睡眠狀態(tài)。該狀態(tài)的進(jìn)程無法被?kill,也無法自行退出。只能通過恢復(fù)其依賴的資源或者重啟系統(tǒng)來解決。
kswapd0?進(jìn)程占用?CPU?較高
操作系統(tǒng)都用分頁機(jī)制來管理物理內(nèi)存,操作系統(tǒng)將磁盤的一部分劃出來作為虛擬內(nèi)存,由于內(nèi)存的速度要比磁盤快得多,所以操作系統(tǒng)要按照某種換頁機(jī)制將不需要的頁面換到磁盤中,將需要的頁面調(diào)到內(nèi)存中,由于內(nèi)存持續(xù)不足,這個(gè)換頁動(dòng)作持續(xù)進(jìn)行,kswapd0是虛擬內(nèi)存管理中負(fù)責(zé)換頁的,當(dāng)服務(wù)器內(nèi)存不足的時(shí)候kswapd0會(huì)執(zhí)行換頁操作,這個(gè)換頁操作是十分消耗主機(jī)CPU資源的。如果通過top發(fā)現(xiàn)該進(jìn)程持續(xù)處于非睡眠狀態(tài),且運(yùn)行時(shí)間較長,可以初步判定系統(tǒng)在持續(xù)的進(jìn)行換頁操作,可以將問題轉(zhuǎn)向內(nèi)存不足的原因來排查。
問題描述:
kswapd0?進(jìn)程占用了系統(tǒng)大量?CPU?資源。
處理辦法:
Linux?系統(tǒng)通過分頁機(jī)制管理內(nèi)存的同時(shí),將磁盤的一部分劃出來作為虛擬內(nèi)存。而?kswapd0?是?Linux?系統(tǒng)虛擬內(nèi)存管理中負(fù)責(zé)換頁的進(jìn)程。當(dāng)系統(tǒng)內(nèi)存不足時(shí),kswapd0?會(huì)頻繁的進(jìn)行換頁操作。而由于換頁操作非常消耗?CPU?資源,所以會(huì)導(dǎo)致該進(jìn)程持續(xù)占用較高?CPU?資源。
如果通過?top?等監(jiān)控發(fā)現(xiàn)?kswapd0?進(jìn)程持續(xù)處于非睡眠狀態(tài),且運(yùn)行時(shí)間較長并持續(xù)占用較高?CPU?資源,則通常是由于系統(tǒng)在持續(xù)的進(jìn)行換頁操作所致。則可以通過?free?、ps?等指令進(jìn)一步查詢系統(tǒng)及系統(tǒng)內(nèi)進(jìn)程的內(nèi)存占用情況,做進(jìn)一步排查分析。
本文由職坐標(biāo)整理并發(fā)布,希望對(duì)同學(xué)們有所幫助。了解更多詳情請(qǐng)關(guān)注系統(tǒng)運(yùn)維Linux頻道!
總結(jié)
以上是生活随笔為你收集整理的linux cpu不足处理运维,Linux运维知识之Linux服务器CPU占用率较高问题排查思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白鹭php源码,白鹭/CDNDrive
- 下一篇: IP地址,子网掩码、默认网关,DNS服务