linux硬件資源問題排查:cpu負載、內存使用情況、磁盤空間、磁盤IO


  在使用過程中之前正常的功能,突然無法使用,性能變慢,通常都是資源消耗問題,資源消耗可以從以下幾個方面去排查。對於已經安裝硬件資源監控軟件(zabbix)的環境,直接使用硬件資源監控軟件(zabbix),檢查服務器的資源消耗情況,在沒有安裝zabbix的環境,主要排查的資源包括CPU負載、內存使用情況、磁盤空間、磁盤IO等。

1.1.1    cpu負載

  cpu負載就是cpu在一段時間內正在處理以及等待cpu處理的進程數之和的統計信息,也就是cpu使用隊列的長度統計信息,這個數字越小越好。

  使用top指令將會輸出如下結果 

  load average代表CPU的平均負載值,示例中的load average: 1.30, 1.27,1.28分別表示當前CPU在1分鍾、5分鍾和15分鍾內的平均負載。對於單核cpu,一旦大於1,就說明job得不到及時調度,系統性能將會受到影響。對於2核心來說,該值大於2才說明cpu忙不過來。

  在top指令輸出結果后,輸入P,將進程按%cpu降序排列,查看哪些進程在大量占用cpu,輸入M,將進程按%MEM降序排列,查看哪些進程在大量占用內存。

1.1.2    內存使用情況

  使用free -h查看內存使用情況。

# free -h

              total        used        free      shared  buff/cache   available

Mem:            15G         12G        295M         38M        2.8G        2.6G

Swap:          7.9G        416M        7.5G

  total表示系統總的可用物理內存大小,used表示已經使用的物理內存大小,available可以被 應用程序 使用的物理內存大小,當可使用的物理內存大小較小時,結合top指令,查看哪些應用程序占用的大量內存。

1.1.3    磁盤空間

  使用df -h查看系統的磁盤使用情況。

# df -h                    

文件系統        容量  已用  可用 已用% 掛載點

/dev/sda2        50G   24G   27G   47% /

devtmpfs        7.8G     0  7.8G    0% /dev

tmpfs           7.8G   28K  7.8G    1% /dev/shm

tmpfs           7.8G   37M  7.8G    1% /run

tmpfs           7.8G     0  7.8G    0% /sys/fs/cgroup

/dev/sdb2        40G  4.8G   36G   12% /var/scs

/dev/sdc2        30G   20G   11G   64% /home

/dev/sda1       494M  208M  287M   43% /boot

/dev/sdc1       249G  108G  142G   44% /home/sdc

/dev/sdb1       239G  133G  107G   56% /home/sdb

/dev/sda5       220G  101G  120G   46% /home/sda

tmpfs           1.6G  4.0K  1.6G    1% /run/user/42

tmpfs           1.6G   32K  1.6G    1% /run/user/0

 

  對於磁盤使用情況,主要關注已用%,已用%大於80%后要開始清理無效日志、不在使用的安裝包等。

  已用%較大的掛載點,使用du -sh 掛載點/*,查看掛載點內個文件、目錄的實際大小。

# du -sh /home/*

20K     /home/bats

0       /home/data

127M    /home/dba

85M     /home/dba1.5.5

9.5G    /home/dbus

23M     /home/dbus_processor

4.0M    /home/hcloud

65M     /home/kafka

13M     /home/log.tmp

188K    /home/lost+found

93M     /home/ltest

1.1.4    磁盤IO

  使用iostat -x 5查看磁盤IO使用情況。

# iostat -x 5

Linux 3.10.0-957.5.1.el7.x86_64 (node9)         2020年04月09日  _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

          27.61    0.03    3.72    0.12    0.00   68.52

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

sdb               0.01     0.05    5.46    6.23   166.86   351.76    88.76     0.04    3.02    2.45    3.52   0.31   0.36

sda               2.28     5.02    1.24   28.60    36.80   658.85    46.63     0.01    0.24    3.89    0.08   0.12   0.35

sdc               0.01     0.03    0.33    1.07     2.61     8.68    16.14     0.00    0.62    2.50    0.03   0.43   0.06

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           3.32    0.00    4.50    0.00    0.00   92.18

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

sdb               0.00     0.00    0.00    3.60     0.00    56.00    31.11     0.00    0.00    0.00    0.00   0.00   0.00

sda               0.00     0.20    0.00   32.40     0.00   669.60    41.33     0.00    0.06    0.00    0.06   0.04   0.14

sdc               0.00     0.00    0.00    0.60     0.00     2.40     8.00     0.00    0.00    0.00    0.00   0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           4.18    0.00    5.25    0.00    0.00   90.57

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

sdb               0.00     0.20    0.00    7.80     0.00   138.40    35.49     0.00    0.05    0.00    0.05   0.05   0.04

sda               0.00     0.00    0.00   29.40     0.00   952.00    64.76     0.00    0.07    0.00    0.07   0.03   0.08

sdc               0.00     0.00    0.00    1.40     0.00    12.80    18.29     0.00    0.00    0.00    0.00   0.00   0.00

重點關注參數:

1、iowait% 表示CPU等待IO時間占整個CPU周期的百分比,如果iowait值超過50%,或者明顯大於%system、%user以及%idle,表示IO可能存在問題。

2、avgqu-sz 表示磁盤IO隊列長度,即IO等待個數。

3、await 表示每次IO請求等待時間,包括等待時間和處理時間

4、svctm 表示每次IO請求處理的時間

5、%util 表示磁盤忙碌情況,一般該值超過80%表示該磁盤可能處於繁忙狀態。

 

pidstat -d 3命令查看進程占用磁盤IO的情況

kB_rd/s: 每秒進程從磁盤讀取的數據量(以kB為單位)

kB_wr/s: 每秒進程向磁盤寫的數據量(以kB為單位)

# pidstat -d 3 3

Linux 3.10.0-957.5.1.el7.x86_64 (node9)         2020年04月09日  _x86_64_        (4 CPU)

 

13時35分30秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command

13時35分33秒     0      5159      0.00      1.29      0.00  dockerd

13時35分33秒     0      5174      0.00     45.31      0.00  loop0

13時35分33秒     0      5456      0.00      1.29      0.00  rsyslogd

13時35分33秒     0      6379      0.00      2.59      0.00  java

13時35分33秒     0      7791      0.00      2.59      0.00  java

13時35分33秒     0     10411      0.00      1.29      0.00  java

13時35分33秒    27     15611      0.00    132.04      0.00  mysqld

13時35分33秒     0     26538      0.00      1.29      0.00  java

13時35分33秒     0     28097      0.00      1.29      0.00  java

13時35分33秒     0     30421      0.00      3.88      0.00  java

13時35分33秒     0     32541      0.00      1.29      0.00  java

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM