1. 程式人生 > >Linux 系統 CPU 佔用率較高問題排查思路

Linux 系統 CPU 佔用率較高問題排查思路

CPU負載檢視方法:

使用vmstat檢視系統維度的CPU負載

使用top檢視程序維度的CPU負載

使用 vmstat 檢視系統緯度的 CPU 負載:
可以通過 vmstat 從系統維度檢視 CPU 資源的使用情況。
用法說明:

格式:vmstat -n 1# -n 1 表示結果一秒重新整理一次。示例輸出:

[[email protected] ~]# vmstat  -t 1
procs -----------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

回顯說明:

返回結果中的主要資料列說明: 

  • r: 表示系統中 CPU 等待處理的執行緒。由於 CPU 每次只能處理一個,所以,該數值越大,通常表示系統執行越慢。
  • us:使用者模式消耗的 CPU 時間百分比。該值較高時,說明使用者程序消耗的 CPU 時間比較多,比如,如果該值長期超過 50%,則需要對程式演算法或程式碼等進行優化。
  • sy:核心模式消耗的 CPU 時間百分比。
  • wa:IO 等待消耗的 CPU 時間百分比。該值較高時,說明 IO 等待比較嚴重,這可能磁碟大量作隨機訪問造成的,也可能是磁碟效能出現了瓶頸。
  • id:處於空閒狀態的 CPU 時間百分比。如果該值持續為 0,同時 sy 是 us 的兩倍,則通常說明
    系統則面臨著 CPU 資源的短缺。

使用 top 檢視程序緯度的 CPU 負載:
可以通過 top 從程序緯度來檢視其 CPU、記憶體等資源的使用情況。
用法說明:格式:top示例輸出

[[email protected] ~]# top
top - 20:02:37 up 35 days, 23:33,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 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 st
KiB Mem : 12139008 total,  5998320 free,  2074896 used,  4065792 buff/cache
KiB Swap:  2098172 total,  2098172 free,        0 used.  9739056 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                   
 1006 influxdb  20   0 5001836 332224  11568 S   1.0  2.7   1172:51 influxd                                                                                   
 3578 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 top                                                                                       
    1 root      20   0  196848  11904   2348 S   0.0  0.1   7:32.27 systemd                                                                                   
    2 root      20   0       0      0      0 S   0.0  0.0   0:02.22 kthreadd                                                                                  
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.71 ksoftirqd/0                                                                               
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                              
    7 root      rt   0       0      0      0 S   0.0  0.0   0:01.43 migration/0                                                                               
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                    
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0                                                                                   
   10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1                                                                                   
   11 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/2                                                                                   
   12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/3                                                                                   
   13 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/4

回顯說明:

預設介面上第三行會顯示當前 CPU 資源的總體使用情況,下方會顯示各個程序的資源佔用情況。

可以直接在介面輸入大小字母 P,來使監控結果按 CPU 使用率倒序排列,進而定位系統中佔用 CPU 較高的程序。最後,根據系統日誌和程式自身相關日誌,對相應程序做進一步排查分析,以判斷其佔用過高 CPU 的原因。


操作案列:

使用top直接終止CPU消耗較大的程序

如前面所述,可以通過 top 命令檢視系統的負載問題,並定位耗用較多 CPU 資源的程序。

可以直接在 top 執行介面快速終止相應的異常程序。說明如下:

1,想要終止某個程序,只需按下小寫的 k 鍵。

2,輸入想要終止的程序 PID (top 輸出結果的第一列)。比如,如下圖所示,假如想要終止 PID 為 23 的程序,輸入 23 後按回車。

3,如下圖所示,操作成功後,介面會出現類似 “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 等指令進一步查詢系統及系統內程序的記憶體佔用情況,做進一步排查分析。

相關推薦

雲伺服器 ECS Linux 系統 CPU 用率問題排查思路

如果雲伺服器 ECS Linux 系統的 CPU 持續跑高,則會對系統穩定性和業務執行造成影響。本文對 CPU 佔用率較高問題的排查分析做簡要說明。可以通過 vmstat 從系統維度檢視 CPU 資源的使用情況。用法說明:格式:vmstat -n 1-n 1表示結果一秒重新整理一次。示例輸出:$ vmstat

Linux 系統 CPU 用率問題排查思路

CPU負載檢視方法: 使用vmstat檢視系統維度的CPU負載 使用top檢視程序維度的CPU負載 使用 vmstat 檢視系統緯度的 CPU 負載: 可以通過 vmstat 從系統維度檢視 CPU 資源的使用情況。 用法說明: 格式:vmstat -n 1# -n 1

記一次Spring Websocket後臺伺服器CPU用率的問題排查過程

背景 最近在做Spring Websocket後臺程式的壓力測試,但是當併發數目在10個左右時,伺服器的CPU使用率一直在160%+,出現這個問題後,一開始很納悶,雖然伺服器配置很低,但也不至於只有10個併發吧。。伺服器的主要配置如下: CPU:2核 In

Sublime Text 3 CPU用率 && WebStorm記憶體佔用過

  用Sublime Text 3或WebStorm進行前端開發時,遇到了同樣的問題:當專案檔案比較多或檔案比較大時,CPU佔用率或記憶體佔用持續比較高,後來經查閱發現是index files導致的,可以理解為:Sublime Text 3或WebStorm需要不斷重新整理檔案索引,不斷將專案檔案從硬碟中讀到

線上Java程式導致伺服器CPU用率的問題排除過程

1、故障現象 客服同事反饋平臺系統執行緩慢,網頁卡頓嚴重,多次重啟系統後問題依然存在,使用top命令檢視伺服器情況,發現CPU佔用率過高。 2、CPU佔用過高問題定位 2.1、定位問題程序 使用top命令檢視資源佔用情況,發現pid為14063的程序佔用了大量的CPU

JVM FULL GC太頻繁,CPU用率問題

一,問題描述    今天上午時候,kafka的一個topic湧上來超過平常值的一堆資料,消費客戶端就開始出現了幾個明顯的問題:       1,首先是ZK連線超時       2,CPU飆升到400% 

Java程式導致伺服器CPU用率的問題

1、故障現象 客服同事反饋平臺系統執行緩慢,網頁卡頓嚴重,多次重啟系統後問題依然存在,使用

linux問題排查 - cpu用率的程序和執行緒

1.簡介           一個程式,完成它預設的功能,並不能說明它是一個優良的程式。好的程式,應該是對資源的合理利用,亦或是 用更少的資源(使用合理的演算法),實現更多有效的產出。 &

【轉】Linux下java程序CPU用率分析方法

文章轉載的地址: https://blog.linuxeye.cn/343.html   在工作當中,肯定會遇到由程式碼所導致的高CPU耗用以及記憶體溢位的情況。這種情況發生時,我們怎麼去找出原因並解決。 一般解決方法是通過top命令找出消耗資源高的執行緒id,利用strace命令檢視該執行緒

記一次CPU用率和load排查

  前不久公司進行了一次大促,晚上值班。大促是從晚上8點多開始的,一開始流量慢慢的進來,觀察了應用的各項指標,一切都是正常的,因為這是雙11過後的第一次大促,想著使用者的購買慾應該不會太強,所以我們的運維同事9點多就回家了在家裡面遠端支援,留下交易組和其它後端的技術值班,樓主就是交易組的。誰知10點整的時候我

Linux系統CPU負載處理

linux cpu 負載公司在阿裏雲的Linux服務器CPU負載高達90幾,太嚇人了,現在把處理的過程記錄如下:1 通過top定位到耗費CPU資源較多的進程,假設進程名為“abc”,PID為1112 定位到進程目錄下  cd /proc/111  ll exe3 如果發現不是正常的應用,可以直接刪除對應的可

壓力測試過程中MySQL服務CPU用率的問題排查思路

建立索引 效果 mysql服務器 還要 數據庫服務 如果 頻率 water vpd 〇、經驗總結: 在關註業務接口的TPS時,也要關註數據庫服務器的QPS。如果一個業務流程裏包含多條查詢,那麽業務接口TPS的上升對數據庫服務器QPS的放大效應會很明顯。 如果查詢結果集不大

(轉)linux top命令中各cpu用率含義及案例分析

原文:https://blog.csdn.net/ydyang1126/article/details/72820349 linux top命令中各cpu佔用率含義 0 效能監控介紹 1 確定應用型別 2 確定基準線統計 0 安裝監控工具

IIS解決CPU和記憶體用率的問題

發現程序中的w3wp佔用率過高。   經過查詢,發現如下:   w3wp.exe是在IIS(因特網資訊伺服器)與應用程式池相關聯的一個程序,如果你有多個應用程式池,就會有對應的多個w3wp.exe的程序例項執行。這個程序用來分配大量的系統資源。這個程序對於系統的穩定和安

嵌入式系統中如何降低CPU用率

轉載原文 在軟體開發和效能測試中,CPU佔用率是一個很重要的指標,到底有哪些因素會導致CPU佔用率上升呢?又有哪些手段可以降低CPU的佔用率呢?簡單地總結了一下關於CPU佔用率的那些事。 1. 如何測試CPU佔用率? 首先,我們要學會如何測試程

如何定位cpu用率的java執行緒

檢視cup的使用情況,在Linux下可以使用 top 或者 htop命令 top -u ${使用者} -c top -u devops -c 在命令列提示符執行top命令,輸入大寫P,

C++程式設計中,利用WINDOWS API獲得系統狀態資訊[CPU用率,硬碟使用情況,記憶體使用情況]

#include <Ice/Ice.h> #include <iostream> #include <GetWinSysState.h> #include <Winbase.h> #include <conio.h>

Mac UserEventAgent 程序CPU用率的解決辦法

有兩個辦法: 1.刪除這個檔案 /System/Library/UserEventPlugins/AppleHIDMouseAgent.plugin/Contents/MacOS/AppleH ID

linux cpu用率分析

http://blog.leanote.com/post/github-yihengliucc/linux-cpu%E5%8D%A0%E7%94%A8%E7%8E%87%E5%88%86%E6%9E%90 使用top命令檢視可能會有程序佔用率非常高,這個數值是程序內各

用MyEclipse時CPU用率老是100%,javaw.exe

先是一開啟就很高,後來在網上找找找找,找了半天也沒有找出來,後來發現只是在編輯那個Jsp的時候是,換個別的就沒有問題了 ,估計這個頁面有問題啊。 或者JSP編輯器有問題,可以換個編輯器 ============================