全部產品
Search
文件中心

Elastic Compute Service:Linux執行個體負載高問題排查和異常處理

更新時間:Jul 04, 2024

本文檔介紹Linux雲端服務器負載高導致ECS執行個體運行變慢、自動關機或重啟、無法登入等異常問題的排查方法和解決方案。

問題描述

在您使用ECS執行個體過程中,可能會遇到執行個體系統負載較高的情況,負載過高,可能會引發一系列異常問題,簡單說明如下:

  • CPU使用率或負載過高:一般來說,當CPU使用率≥80%時,定義為CPU使用率過高。CPU使用率持續過高,可能會導致執行個體運行速度變慢,自動關機或重啟、無法登入等問題。

  • 頻寬使用率過高:一般來說,頻寬使用率≥當前頻寬80%時,定義為頻寬使用率過高。頻寬使用率持續過高,將影響執行個體的網路連通性或網路吞吐,例如執行個體無法遠端連線、網速過慢等。

  • 記憶體使用量率過高:一般來說,當記憶體使用量率≥80%時,定義為記憶體使用量率過高。記憶體使用量率過高,可能會出現系統卡頓、內部服務響應速度變慢等問題。

  • I/O使用率過高:一般來說,當前I/O讀寫≥該雲端硬碟I/O的80%時,定義為I/O使用率過高。I/O使用率過高,可能會出現檔案讀寫變慢、應用效能下降或報錯等問題。

問題排查

您可以使用SAR工具或htop工具定位該執行個體的負載過高及各資源的使用方式。

使用sar工具查看執行個體各資源使用方式

sar是System Activity Reporter(系統活動情況報告)的縮寫,sar工具對系統狀態進行取樣後,通過計算資料和比例來表達系統當前的運行狀態。其特點是可以連續對系統取樣,獲得大量的取樣資料。其取樣資料和分析結果可以存入檔案,所需的負載很小。

sar是Linux系統中較為全面的效能分析工具,可以從多個方面對系統的活動進行監控和報告,包括檔案讀寫情況、系統調用使用方式、串口、CPU效率、記憶體使用量情況、進程活動及IPC(Inter-Process Communication,處理序間通訊)等。

安裝sar工具

如果您的ECS執行個體中預設未安裝sar工具,可參考如下步驟進行安裝。

  1. 使用VNC串連Linux系統的ECS執行個體。

    具體操作,請參見使用VNC登入執行個體

  2. 執行如下命令,安裝sar工具。

    yum install sysstat
  3. 執行如下命令,啟動sysstat服務。

    systemctl start sysstat
  4. 執行如下命令,查看sysstat服務狀態。

    systemctl status sysstat

    當返回系統中出現Active: active (exited)表示sysstat服務已啟動。

查看CPU使用率

執行如下命令,查看CPU負載。

sar -u 1 5   #每隔一秒重新整理,重新整理5次

系統顯示類似如下。

Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)
10:16:35 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:16:36 AM     all     14.14      0.00      1.01      0.00      0.00     84.85
10:16:37 AM     all     14.14      0.00      0.00      1.01      0.00     84.85
10:16:38 AM     all      0.00      0.00      1.01      0.00      0.00     98.99
10:16:39 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
10:16:40 AM     all      1.00      0.00      0.00      0.00      0.00     99.00
Average:        all      5.86      0.00      0.40      0.20      0.00     93.54

顯示結果主要欄位說明

  • %user:使用者模式下消耗的CPU時間比例。

  • %nice:通過nice改變了進程調度優先順序的進程,在使用者模式下消耗的CPU時間比例。

  • %system:系統模式下消耗的CPU時間比例。

  • %iowait:CPU等待磁碟I/O導致空閑狀態消耗的時間比例。

  • %steal:利用Xen等作業系統虛擬化技術,等待其它虛擬CPU計算佔用的時間比例。

  • %idle:CPU空閑時間百分比。

查看隊列長度和CPU平均負載

執行如下命令,查看隊列長度和CPU平均負載。

sar -q 1 10    #每隔一秒重新整理,重新整理10次

系統顯示類似如下。

Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)
10:23:13 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10:23:14 AM         0       142      0.00      0.01      0.05         0
10:23:15 AM         0       142      0.00      0.01      0.05         0
10:23:16 AM         0       142      0.00      0.01      0.05         0
10:23:17 AM         0       142      0.00      0.01      0.05         0
10:23:18 AM         0       142      0.00      0.01      0.05         0
10:23:19 AM         0       142      0.00      0.01      0.05         0
Average:            0       142      0.00      0.01      0.05         0

顯示結果主要欄位說明

  • runq-sz:運行隊列的長度,即等待啟動並執行進程數。

  • plist-sz:進程列表中進程(processes)和線程(threads)的數量。

  • ldavg-1:最後1分鐘的系統平均負載。

  • ldavg-5:最後5分鐘的系統平均負載。

  • ldavg-15:最後15分鐘的系統平均負載。

查看磁碟使用方式

執行如下命令,查看磁碟讀寫負載情況。

sar -d 1 3    #每隔一秒重新整理,重新整理3次

系統顯示類似如下。

Linux 5.10.134-13.al8.x86_64 (iZ2zegjvrdtgifd77gadyqZ)  03/09/2023      _x86_64_        (8 CPU)

02:41:04 PM       DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
02:41:05 PM  dev253-0      1.00      0.00      4.00      4.00      0.00      0.00      1.00      0.10
02:41:06 PM  dev253-0      1.00      0.00      4.00      4.00      0.00      1.00      1.00      0.10
02:41:07 PM  dev253-0      1.00      0.00      4.00      4.00      0.00      0.00      2.00      0.20
02:41:08 PM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:41:09 PM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:     dev253-0      0.60      0.00      2.40      4.00      0.00      0.33      1.33      0.08

顯示結果主要欄位說明

  • tps:每秒I/O的傳輸總數。

  • rd_sec/s:每秒讀取的扇區的次數。

  • wr_sec/s:每秒寫入的扇區的次數。

  • avgrq-sz:平均每次磁碟I/O操作的扇區大小。

  • avgqu-sz:磁碟請求隊列的平均長度。

  • await:從請求磁碟操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間。

  • svctm:系統處理每次請求的平均時間。

  • %util:I/O請求佔用的CPU百分比,值越高,說明I/O越慢。

查看記憶體負載

執行如下命令,查看記憶體負載。

sar -r 1 3    #每隔一秒重新整理,重新整理3次

系統顯示類似如下。

Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ)     07/04/2016     _x86_64    (1 CPU)

10:27:34 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive  kbinact  kbdirty
10:27:35 AM    275992    740664     72.85    181552    315340    362052     35.61    471216   115828       60
10:27:36 AM    276024    740632     72.85    181552    315340    362052     35.61    471220   115828       64
10:27:37 AM    276024    740632     72.85    181552    315340    362052     35.61    471220   115828       64
Average:       276013    740643     72.85    181552    315340    362052     35.61    471219   115828       63

顯示結果主要欄位說明

  • kbmemfree:該值和free命令中的free值基本一致,不包括buffer和cache空間。

  • kbmemused:該值和free命令中的used值基本一致,包括buffer和cache空間。

  • %memused:實體記憶體使用率,該值是kbmemused和記憶體總量(不包括swap記憶體)的百分比。

  • kbbuffers和kbcached:這兩個值和free命令中的buffer和cache一致。

  • kbcommit:保證當前系統所需要的記憶體,即為了確保不溢出而需要的記憶體,即RAM加上swap的記憶體。

  • %commit:該值是kbcommit與記憶體總量(包括swap記憶體)的百分比。

查看I/O負載

執行如下命令,查看I/O負載。

sar -b 1 10 #每隔一秒重新整理,重新整理10次

系統顯示類似如下。

Linux 5.10.134-13.al8.x86_64 (iZ2zegjvrdtgifd77gadyqZ) 03/09/2023 _x86_64_ (8 CPU)

02:34:00 PM tps rtps wtps bread/s bwrtn/s
02:34:01 PM 6.00 0.00 6.00 0.00 80.00
02:34:02 PM 55.00 0.00 55.00 0.00 632.00
02:34:03 PM 1.00 0.00 1.00 0.00 8.00
02:34:04 PM 0.00 0.00 0.00 0.00 0.00
02:34:05 PM 0.00 0.00 0.00 0.00 0.00
02:34:06 PM 2.00 0.00 2.00 0.00 136.00
02:34:07 PM 82.00 0.00 82.00 0.00 888.00
02:34:08 PM 0.00 0.00 0.00 0.00 0.00
02:34:09 PM 0.00 0.00 0.00 0.00 0.00
02:34:10 PM 0.00 0.00 0.00 0.00 0.00
Average: 14.60 0.00 14.60 0.00 174.40

顯示結果主要欄位說明

  • tps:每秒鐘向物理裝置請求資料次數。

  • rtps:每秒鐘向物理裝置讀請求次數。

  • wtps:每秒鐘向物理裝置寫請求次數。

  • bread/s:每秒鐘從物理裝置讀入的資料量。

  • bwrtn/s:每秒鐘向物理裝置寫入的資料量。

查看swap分區頁面交換情況

執行如下命令,查看swap分區頁面交換情況。

sar -W 1 3

系統顯示類似如下。

Linux 3.10.0-123.9.3.el7.x8664 (iZ23pddtofdZ) 07/04/2016 _x86_64 (1 CPU)
10:28:59 AM pswpin/s pswpout/s
10:29:00 AM 0.00 0.00
10:29:01 AM 0.00 0.00
10:29:02 AM 0.00 0.00
Average: 0.00 0.00

顯示結果主要欄位說明

  • pswpin/s:每秒從交換分區到系統的交換頁面(swap page)數量。

  • pswpout/s:每秒從系統交換到swap的交換頁面(swap page)的數量。

常見sar命令參數

sar命令的參數說明如下,區分大小寫。

  • -A:匯總所有的報告。

  • -a:報告檔案讀寫使用方式。

  • -B:報告附加緩衝的使用方式。

  • -b:報告緩衝的使用方式。

  • -c:報告系統調用的使用方式。

  • -d:報告磁碟的使用方式。

  • -g:報告串口的使用方式。

  • -h:報告關於buffer使用的統計資料。

  • -m:報告IPC訊息佇列和訊號量的使用方式。

  • -n:報告命名cache的使用方式。

  • -p:報告調頁活動的使用方式。

  • -q:報告運行隊列和交換隊列的平均長度。

  • -R:報告進程的活動情況。

  • -r:報告沒有使用的記憶體頁面和硬碟塊。

  • -u:報告CPU的利用率。

  • -v:報告進程、i節點、檔案和鎖表狀態。

  • -w:報告系統交換活動狀況。

  • -y:報告TTY裝置活動狀況。

使用htop查看系統內各進程負載情況

htop是Linux系統中的一個互動進程查看器,可以很直觀地查看CPU、記憶體、swap的使用方式及平均負載。

  1. 遠端連線Linux系統的ECS執行個體。

    具體操作,請參見串連方式概述

  2. 執行如下命令,安裝htop工具。

    yum install htop
  3. 執行如下命令,啟動htop監控工具。

    htop
  4. 使用htop工具查看系統負載。

    htop啟動後的介面如下圖所示,不同地區說明如下:

    • ①:左側顯示CPU、記憶體、swap交換區的使用方式,右側顯示進程總數、平均負載及系統已耗用時間。

    • ②:當前系統中所有進程的使用方式,可通過單擊CPU%或MEM%對CPU使用率及記憶體使用量率排序,查看使用率較高的進程。

    • ③F1到F10功能鍵。

    htop

故障處理