Linux系统负载暴增时检查性能常用的命令
本文最后更新于 775 天前,其中的信息可能已经有所发展或是发生改变。

Linux系统负载暴增时检查性能常用的命令

Linux服务器突然负载暴增,可通过执行以下命令,可以在几分钟内对系统资源使用情况有个大致的了解。

  • uptime
  • dmesg | tail
  • vmstat 1
  • mpstat -P ALL 1
  • pidstat 1
  • iostat -xz 1
  • free -m
  • sar -n DEV 1
  • sar -n TCP,ETCP 1
  • top

uptime

[root@nacos1 ~]# uptime
 13:41:39 up 79 days,  2:23,  1 user,  load average: 1.12, 0.92, 0.82

这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。

命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是区域缓解。如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。

dmesg丨tail 或者 dmesg | head -n 20

[root@nacos1 ~]# dmesg | head -n 20
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-1127.18.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Sun Jul 26 15:27:06 UTC 2020
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1127.18.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
[    0.000000] Disabled fast string operations
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000003fedffff] usable
[    0.000000] BIOS-e820: [mem 0x000000003fee0000-0x000000003fefefff] ACPI data
[    0.000000] BIOS-e820: [mem 0x000000003feff000-0x000000003fefffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000003ff00000-0x000000003fffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.4 present.

dmesg命令用于显示系统开机信息,可用于诊断系统故障。

vmstat 1

[root@nacos1 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0 2076624 219992   1336 9524004    0    0     0    35    1    0  3  0 97  0  0
 0  0 2076624 219604   1336 9524052    0    0     0    42 5492 7857 10  1 89  0  0

每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。后面跟的参数1,表示每秒输出一次统计信息,表头提示了每一列的含义,这几介绍一些和性能调优相关的列:

  • r:等待在CPU资源的进程数。这个数据比平均负载更加能够体现CPU负载情况,数据中不包含等待IO的进程。如果这个数值大于机器CPU核数,那么机器的CPU资源已经饱和。
  • free:系统可用内存数(以千字节为单位),如果剩余内存不足,也会导致系统性能问题。下文介绍到的free命令,可以更详细的了解系统内存的使用情况。
  • si, so:交换区写入和读取的数量。如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存已经不足。
  • us, sy, id, wa, st:这些都代表了CPU时间的消耗,它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。

上述这些CPU时间,可以让我们很快了解CPU是否出于繁忙状态。一般情况下,如果用户时间和系统时间相加非常大,CPU出于忙于执行指令。如果IO等待时间很长,那么系统的瓶颈可能在磁盘IO。

mpstat -P ALL 1

[root@nacos1 ~]# mpstat -P ALL 1
Linux 3.10.0-1160.76.1.el7.x86_64 (nacos1.com)  2022年12月07日  _x86_64_        (16 CPU)

13时51分09秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13时51分10秒  all    0.63    0.00    0.31    0.00    0.00    0.06    0.00    0.00    0.00   99.00
13时51分10秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13时51分10秒    1    2.02    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   96.97
13时51分10秒    2    2.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
13时51分10秒    3    0.99    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.01
13时51分10秒    4    0.99    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   98.02
13时51分10秒    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13时51分10秒    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13时51分10秒    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13时51分10秒    8    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
13时51分10秒    9    0.98    0.00    0.98    0.00    0.00    0.00    0.00    0.00    0.00   98.04
13时51分10秒   10    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
13时51分10秒   11    1.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
13时51分10秒   12    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13时51分10秒   13    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
13时51分10秒   14    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
13时51分10秒   15    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00

该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。

pidstat 1

[root@nacos1 ~]# pidstat 1
Linux 3.10.0-1160.76.1.el7.x86_64 (nacos1.com)  2022年12月07日  _x86_64_        (16 CPU)

13时51分50秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
13时51分51秒  1000      5430  100.00    2.97    0.00  100.00     5  java
13时51分51秒     0      5669    0.99    0.00    0.00    0.99     9  vmware_exporter
13时51分51秒     0      5865    0.99    0.99    0.00    1.98     6  cadvisor
13时51分51秒     0      7994    5.94    3.96    0.00    9.90     5  java
13时51分51秒     0     27875    0.99    0.99    0.00    1.98     2  pidstat

pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态。

iostat -xz 1

[root@nacos1 ~]# iostat -xz 1
Linux 3.10.0-1160.76.1.el7.x86_64 (nacos1.com)  2022年12月07日  _x86_64_        (16 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.60    0.00    0.42    0.01    0.00   96.98

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     2.51    0.06   22.87     1.82   566.02    49.53     0.02    0.80   18.20    0.76   0.33   0.76
scd0              0.00     0.00    0.00    0.00     0.00     0.00   114.22     0.00   17.11   17.11    0.00  17.11   0.00
dm-0              0.00     0.00    0.06   25.18     1.79   565.19    44.94     0.02    0.79   18.86    0.74   0.30   0.76
dm-1              0.00     0.00    0.00    0.20     0.02     0.82     8.01     0.00    7.28    9.61    7.24   0.08   0.00

iostat命令主要用于查看机器磁盘IO情况。该命令输出的列,主要含义是:

  • r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。
  • await:IO操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。
  • avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。
  • %util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。

如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能。

free -m

[root@nacos1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:          19914       10405         197          33        9311        8952
Swap:          4095        2028        2067

free命令可以查看系统内存的使用情况,如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加IO开销(可以在iostat命令中提现),降低系统性能。

sar -n DEV 1

[root@nacos1 ~]# sar -n DEV 1
Linux 3.10.0-1160.76.1.el7.x86_64 (nacos1.com)  2022年12月07日  _x86_64_        (16 CPU)

13时54分18秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
13时54分19秒 vethe542e52      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 br-b3c8774ba4d8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth25dc11b      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth4321375      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 br-48984e41f1e8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth2ab05ff      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒    ens192    273.00    178.00     40.89     15.06      0.00      0.00      0.00
13时54分19秒 br-b8cc0caf0f1c    179.00    262.00     12.65     40.22      0.00      0.00      0.00
13时54分19秒 veth0b7d9aa      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 vethafc2f17      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth2847aab      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 br-b08c5c456fe3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 br-9b9bee6ce98a      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth6a60e4a      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth4813ed4      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 vethabcc2f6      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth343dbba      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth562045f    239.00    290.00   1734.11     42.02      0.00      0.00      0.00
13时54分19秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 vethefd4693      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 vethec916cb      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth6931d12     28.00     60.00      1.80   1719.01      0.00      0.00      0.00
13时54分19秒 br-14ba3e1b2440      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 veth66a7ab7      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 vethf842758      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒 vethab3a82b      0.00      0.00      0.00      0.00      0.00      0.00      0.00
13时54分19秒   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均时间: vethe542e52      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: br-b3c8774ba4d8     46.23     44.22      2.98      4.00      0.00      0.00      0.00
平均时间: veth25dc11b      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth4321375      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: br-48984e41f1e8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth2ab05ff      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:    ens192    308.04    220.10     41.91     19.75      0.00      0.00      0.00
平均时间: br-b8cc0caf0f1c    171.86    253.27     12.19     37.18      0.00      0.00      0.00
平均时间: veth0b7d9aa      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethafc2f17      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth2847aab      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: br-b08c5c456fe3      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: br-9b9bee6ce98a      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth6a60e4a      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth4813ed4      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethabcc2f6      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth343dbba      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth562045f    215.08    285.43    879.21    454.55      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethefd4693      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethec916cb      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth6931d12     32.16     43.22    417.37    864.67      0.00      0.00      0.00
平均时间: br-14ba3e1b2440      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth66a7ab7      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethf842758      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethab3a82b     46.23     44.22      3.62      4.00      0.00      0.00      0.00
平均时间:   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

sar命令在这里可以查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。

sar -n TCP,ETCP 1

[root@nacos1 ~]# sar -n TCP,ETCP 1
Linux 3.10.0-1160.76.1.el7.x86_64 (nacos1.com)  2022年12月07日  _x86_64_        (16 CPU)

13时55分18秒  active/s passive/s    iseg/s    oseg/s
13时55分19秒      0.00      0.00      1.00      0.00

13时55分18秒  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
13时55分19秒      0.00      0.00      0.00      0.00      0.00

13时55分19秒  active/s passive/s    iseg/s    oseg/s
13时55分20秒      0.00      0.00      1.00      1.00

13时55分19秒  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
13时55分20秒      0.00      0.00      0.00      0.00      0.00

13时55分20秒  active/s passive/s    iseg/s    oseg/s
13时55分21秒      0.00      0.00      1.00      1.00

13时55分20秒  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
13时55分21秒      0.00      0.00      0.00      0.00      0.00

13时55分21秒  active/s passive/s    iseg/s    oseg/s
13时55分21秒      0.00      0.00      9.62     11.54

13时55分21秒  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
13时55分21秒      0.00      0.00      0.00      0.00      0.00

平均时间:  active/s passive/s    iseg/s    oseg/s
平均时间:      0.00      0.00      2.27      2.27

平均时间:  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
平均时间:      0.00      0.00      0.00      0.00      0.00

TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包。

top

top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。因此通过这个命令,可以相对全面的查看系统负载的来源。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇