日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Linux系統(tǒng)CPU使用率和負載高排查方法

本文主要介紹當(dāng)Linux實例CPU使用率或CPU負載較高時,如何排查分析及常見案例說明。

操作場景

在您使用輕量應(yīng)用服務(wù)器實例過程中,可能會遇到實例CPU使用率或CPU負載持續(xù)較高的情況,您可以按照以下步驟排查定位具體問題。

  1. 找到影響CPU使用率或CPU負載過高的具體進程。

  2. 排查影響CPU使用率或CPU負載過高的進程是否正常,并分類進行處理。

    • 對于正常進程:您需要對程序進行優(yōu)化或者升配實例。具體操作,請參見升級配置。

    • 對于異常進程:您可以手動對進程進行查殺,也可以使用第三方安全工具去查殺。

CPU負載的查詢分析

在Linux系統(tǒng)中,查看進程的常用命令如下所示。本文主要介紹vmstat和top常用命令的使用。

  • vmstat

  • top

  • ps -aux

  • ps -ef

vmstat命令的使用

vmstat(VirtualMemoryStatistics,虛擬內(nèi)存統(tǒng)計),通過vmstat命令,從系統(tǒng)維度查看操作系統(tǒng)的虛擬內(nèi)存、進程、CPU等的整體情況。

vmstat命令

常用vmstat命令如下所示。

vmstat [-n] [delay [count]] 
說明
  • [-n]:只在開始時顯示一次各字段名稱。

  • [delay]:刷新時間間隔。如果不指定,只顯示一條結(jié)果。

  • [count]:刷新次數(shù)。如果不指定刷新次數(shù),但指定了刷新時間間隔,這時刷新次數(shù)為無窮。

使用示例

執(zhí)行如下命令,使用vmstat每1秒統(tǒng)計一次各進程的CPU使用情況,連續(xù)統(tǒng)計4次。

vmstat -n 1 4

返回示例類似如下。

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2684984 310452 2364304    0    0     5    17   19   35  4  2 94  0  0
 0  0      0 2687504 310452 2362268    0    0     0   252 1942 4326  5  2 93  0  0
 0  0      0 2687356 310460 2362252    0    0     0    68 1891 4449  3  2 95  0  0
 0  0      0 2687252 310460 2362256    0    0     0     0 1906 4616  4  1 95  0  0

顯示結(jié)果主要字段說明

  • r:表示系統(tǒng)中CPU等待處理的線程。一個CPU每次只能處理一個線程,所以該數(shù)值越大,通常表示系統(tǒng)運行越慢。

  • us:用戶模式消耗的CPU時間百分比。該值較高時,說明用戶進程消耗的CPU時間比較多。如果該值長期超過50%,則需要對程序算法或代碼等進行優(yōu)化。

  • sy:內(nèi)核模式消耗的CPU時間百分比。

  • wa:I/O等待消耗的CPU時間百分比。該值較高時,說明IO等待比較嚴(yán)重,這可能是磁盤大量作隨機訪問造成的,也可能是磁盤性能出現(xiàn)了瓶頸。

  • id:處于空閑狀態(tài)的CPU時間百分比。如果該值持續(xù)為0,同時sy是us的兩倍,則通常說明系統(tǒng)面臨CPU資源短缺。

top命令的使用

top命令是Linux系統(tǒng)中常用的性能分析工具,可以實時顯示系統(tǒng)中各進程的資源占用情況。

top命令

top [-n] [-d] 
說明
  • [-n]:只在開始時顯示一次各字段名稱。

  • [delay]:刷新時間間隔。如果不指定,只顯示一條結(jié)果。

  • [count]:刷新次數(shù)。如果不指定刷新次數(shù),但指定了刷新時間間隔,這時刷新次數(shù)為無窮。

使用示例

  1. 遠程連接Linux系統(tǒng)的輕量應(yīng)用服務(wù)器實例。具體操作,請參見遠程連接Linux服務(wù)器。

  2. 執(zhí)行如下命令,查看系統(tǒng)中各進程的資源占用情況。

    如下命令表示:每2秒統(tǒng)計一次各進程相關(guān)信息,統(tǒng)計5次后停止。

    top -n 5 -d 2

    系統(tǒng)顯示類似如下。

    top - 17:27:13 up 27 days,  3:13,  1 user,  load average: 0.02, 0.03, 0.05
    Tasks:  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 st
    KiB Mem:   1016656 total,   946628 used,    70028 free,   169536 buffers
    KiB 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

    顯示結(jié)果主要字段說明

    針對CPU使用率和CPU負載問題,您只需關(guān)注回顯的第一行和第三行信息,詳細說明如下。

    • 第一行:顯示的內(nèi)容17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05,依次為系統(tǒng)當(dāng)前時間、系統(tǒng)到目前為止已運行的時間、當(dāng)前登錄系統(tǒng)的用戶數(shù)量、系統(tǒng)負載。

    • 第三行:顯示當(dāng)前CPU資源的總體使用情況,下方會顯示各個進程的資源占用情況。

  3. 在top命令執(zhí)行過程中,可以使用一些交互命令。

    • 通過P鍵,可以對CPU使用率進行倒序排列,方便定位系統(tǒng)中占用CPU較高的進程。

    • 通過M鍵,您可以對系統(tǒng)內(nèi)存使用情況進行排序。如果有多核CPU,數(shù)字鍵1可以顯示每核CPU的負載狀況。

  4. 執(zhí)行ll /proc/PID/exe命令,可以查看每個進程ID對應(yīng)的程序文件。

  5. 終止CPU消耗較大的進程。

    1. 先寫入小寫字母k。

    2. 輸入想要終止的進程PID,按Enter鍵。

      默認為輸出結(jié)果的第一個PID,如下圖所示,假如想要終止PID為23的進程,輸入23后按Enter鍵。

    3. 操作成功后,界面會出現(xiàn)類似Send pid 23 signal [15/sigterm]的提示信息,按Enter鍵確認即可。

常見CPU資源過高案例分析

案例一:CPU使用率較低但負載較高

問題現(xiàn)象

當(dāng)前Linux系統(tǒng)沒有業(yè)務(wù)程序運行。通過top命令觀察,發(fā)現(xiàn)CPU使用率不高,但是CPU負載(load average)卻非常高,如下圖所示。

問題原因

該問題可能是因為僵尸(zombie)進程過多導(dǎo)致。

load average是對CPU負載進行評估的,其值越高說明其任務(wù)隊列越長,處于等待執(zhí)行的任務(wù)越多。

解決方案

您可以通過ps -axjf命令查看是否存在D+狀態(tài)進程,該狀態(tài)是指不可中斷的睡眠狀態(tài)。

處于該狀態(tài)的進程無法終止,也無法自行退出,只能通過恢復(fù)其依賴的資源或者重啟系統(tǒng)來解決。

案例二:kswapd0進程占用CPU較高

問題現(xiàn)象

輕量應(yīng)用服務(wù)器運行卡頓,使用top命令查看,kswapd0進程占用了99% CPU。

問題原因

出現(xiàn)該問題可能是系統(tǒng)此時在持續(xù)進行換頁操作,導(dǎo)致占用大量CPU資源。

kswapd0是虛擬內(nèi)存管理中負責(zé)換頁的進程,當(dāng)輕量應(yīng)用服務(wù)器物理內(nèi)存不足時,kswapd0會執(zhí)行換頁操作,換頁操作會消耗大量的CPU資源。

解決方案

您可以通過修改vm.swappiness內(nèi)核參數(shù)來控制交換空間的大小,來解決kswapd0進程占用CPU較高的問題。

  1. 遠程連接Linux實例。具體操作,請參見遠程連接Linux服務(wù)器。

  2. 查看swappiness參數(shù)。

    cat /proc/sys/vm/swappiness

    系統(tǒng)顯示類似如下,表示當(dāng)物理內(nèi)存低于60%(100-40)時使用swap空間。

    說明

    swappiness參數(shù)越低,表示Linux系統(tǒng)盡量少用swap分區(qū),多用物理內(nèi)存;swappiness參數(shù)值越高,表示使內(nèi)核更多地去使用swap空間。

    查看swap

  3. 根據(jù)業(yè)務(wù)需要,修改swappiness參數(shù)。

    1. 打開內(nèi)核參數(shù)配置文件sysctl.conf。

      vi /etc/sysctl.conf
    2. 根據(jù)業(yè)務(wù)需要,修改swappiness參數(shù)值。

      如在sysctl.conf文件中,修改vm.swappiness = 10。

    3. Esc鍵,輸入:wq保存修改。

    4. 重新加載sysctl配置文件,使配置生效。

      sysctl -p

      若該問題還未解決,建議您升配實例規(guī)格。具體操作,請參見升級配置。

案例三:CPU使用率高達100%問題排查

問題現(xiàn)象

使用輕量應(yīng)用服務(wù)器的過程中,如果遇到CPU使用率高達100%等異常情況,且無法通過top、htop等命令查詢到消耗CPU資源的具體進程。

問題原因

該問題可能是病毒導(dǎo)致。

解決方案

  1. 查看輕量應(yīng)用服務(wù)器CPU使用率高達100%時的具體時間點。具體操作,請參見查看實例監(jiān)控信息。

  2. 查看Linux實例的命令修改記錄。

    1. 使用救援登錄Linux實例。具體操作,請參見使用救援連接Linux服務(wù)器。

    2. 執(zhí)行如下命令,查看當(dāng)前Linux系統(tǒng)命令最近是否被修改過。

      stat /usr/bin/top

      系統(tǒng)顯示類似如下,系統(tǒng)命令有被修改。查看更改時間是否和云監(jiān)控中CPU使用率出現(xiàn)100%的時間點吻合。

      CommandChanges

  3. 分別執(zhí)行如下命令,查看pstop命令是否被修改過。

    rpm -Vf /bin/ps
    rpm -Vf /usr/bin/top
    • 正常情況下,系統(tǒng)無返回修改信息。

    • 系統(tǒng)異常情況下,顯示類似如下,表示pstop命令被修改過。

      CommandQuery

  4. 執(zhí)行如下命令,查看當(dāng)前實例的IP地址是否解析到異常域名。

    iftop -i [$Device] -n -P
    說明

    [$Device]請?zhí)鎿Q為當(dāng)前系統(tǒng)使用的網(wǎng)卡,如eth0。

    系統(tǒng)顯示類似如下,若您沒有連接過crypto-pool.fr,則crypto-pool.fr是異常域名。

  5. 綜合以上表現(xiàn),top、ps命令被修改,并且解析到異常域名,判斷您的輕量應(yīng)用服務(wù)器已被病毒入侵,可以參考以下方案。

    1. 備份輕量應(yīng)用服務(wù)器實例數(shù)據(jù)。具體操作,請參見創(chuàng)建快照。

    2. 重新初始化系統(tǒng)盤,然后使用云安全中心對輕量應(yīng)用服務(wù)器實例進行安全加固。更多信息,請參見重置系統(tǒng)基礎(chǔ)安全服務(wù)。