故障排查——CPU佔用率過高

前言

上篇介紹了服務器常用指標及計算方式,本篇介紹各個指標觸發閾值告警之後,如何定位和應對各個指標故障情況。

CPU使用率過高

CPU

表面現象

CPU使用率過高,100%以上,可能帶來的後果是,遲遲無法返回計算結果,造成卡頓,甚至卡死。

產生原因

  • 很慢的響應時間(slow response time)
  • Cpu的空閒時間爲零(zero percent idle cpu)
  • 過高的用戶佔用cpu時間(high percent user cpu)
  • 過高的系統佔用cpu時間(high percent system cpu)
  • 長時間的有很長的運行進程隊列(large run queue size sustained over time)

排查步驟

  1. 定位消耗 CPU 的具體進程
    top 然後按P,篩選CPU使用率最高的進程,或vmstat -t 1
  2. 對 CPU 佔用率高的進程進行分析
    如果爲異常進程,可能是病毒或木馬導致,可以自行終止進程,或者使用安全軟件進行查殺;如果是業務進程,則需要分析是否由於訪問量變化引起,是否存在優化空間。
  3. CPU使用率較低但負載較高
    load average 是對 CPU 負載的評估,其值越高,說明其任務隊列越長,處於等待執行的任務越多。
    出現此種情況時,可能是由於僵死進程導致的。可以通過指令 ps -axjf 查看是否存在 D 狀態進程。
    D 狀態是指不可中斷的睡眠狀態。該狀態的進程無法被 kill,也無法自行退出。只能通過恢復其依賴的資源或者重啓系統來解決。

健康範圍:

  • User mode CPU utilization+ System mode CPU utilization
    合理值:60-85%,如果在一個多用戶系統中us+sy時間超過85%,則進程可能要花時間在運行隊列中等待,響應時間和業務吞吐量會受損害;
    us過大,說明有用戶進程佔用很多cpu時間,需要進一步的分析其它軟硬件因素;
    sy過大,說明系統管理方面花了很多時間,說明該系統中某個子系統產生了瓶頸,需要進一步分析其它軟硬件因素。
  • wa(wait)
    參考值:小於25%,超過25%的wa的值可以表示磁盤子系統可能沒有被正確平衡,也可能是磁盤密集工作負載的結果,系統的磁盤或其它I/O可能有問題,可以通過iostat/sar –c命令進一步分解分析
  • Id(idle)
    參考值:大於40,如果r經常大於4,且id經常小於40,表示cpu的負荷很重
  • r
    參考值:小於4,隊列大於4時,表明系統的cpu或內存可能有問題,如果r經常大於4,且id經常少於40,表示cpu的負荷很重。當隊列變長時,隊列中進程在等待cpu調度執行時所花的時間會變長,需使用sar -t 1查看。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章