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