常用的Linux性能监测工具

Linux中如何检测性能?本篇文章推荐一些常用的Linux性能监测工具,在我们运行长时间的任务时,运行Linux性能监测工具,实时查看任务的运行状态。

1. uptime

$ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.0212

该命令可以大致的看出计算机的整体负载情况,load average后的数字分别表示计算机在1min、5min、15min内的平均负载。

2. dmesg | tail

$ dmesg | tail[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0[...][1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check SNMP counters.123456

打印内核环形缓存区中的内容,可以用来查看一些错误;

上面的例子中,显示进程18694 因引内存越界被kill掉以及TCP request被丢弃的错误。通过dmesg可以快速判断是否有导致系统性能异常的问题。

3. vmstat 1

$ vmstat 1procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  032  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  032  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  032  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  032  0    0 200890208  73712 591860    0    0     0     0 15898 4840 98  1  1  0  0^C123456789

打印进程、内存、交换分区、IO和CPU等的统计信息;

vmstat的格式如下

> vmstat [options] [delay [count]]

vmstat第一次输出表示从开机到vmstat运行时的平均值;剩余输出的都是在指定的时间间隔内的平均值,上述例子中delay的值设置为1,除第一次以外,剩余的都是1秒统计一次,count未设置,将会一直循环打印。

$ vmstat 10 3procs -----------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 2527112 1086888 13720228    0    0     1    14    2    1  1  1 99  0  0 0  0      0 2527156 1086888 13719856    0    0     0   104 3003 4901  0  0 99  0  0 0  0      0 2526412 1086888 13719904    0    0     0    10 3345 4870  0  1 99  0  0123456

上述的例子中delay设置为10,count设置为3,表示每行打印10秒内的平均值,只打印3次。

需要检查的列

r:表示正在运行或者等待CPU调度的进程数。因为该列数据不包含I/O的统计信息,因此可以用来检测CPU是否饱和。若r列中的数字大于CPU的核数,表示CPU已经处于饱和状态。

free:当前剩余的内存;

si, so:交换分区换入和换出的个数,若换入换出个数大于0,表示内存不足;

us, sy, id, wa:CPU的统计信息,分别表示user time、system time(kernel)、idle、wait I/O。I/O处理所用的时间包含在system time中,因此若system time超过20%,则I/O可能存在瓶颈或异常;

4. mpstat -P ALL 1

$ mpstat -P ALLLinux 3.10.0-229.el7.x86_64 (localhost.localdomain)     05/30/2018  _x86_64_    (16 CPU)04:03:55 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle04:03:55 PM  all    3.67    0.00    0.61    0.71    0.00    0.00    0.00    0.00    0.00   95.0204:03:55 PM    0    3.52    0.00    0.57    0.76    0.00    0.00    0.00    0.00    0.00   95.1504:03:55 PM    1    3.83    0.00    0.61    0.71    0.00    0.00    0.00    0.00    0.00   94.8504:03:55 PM    2    3.80    0.00    0.61    0.60    0.00    0.00    0.00    0.00    0.00   94.9904:03:55 PM    3    3.68    0.00    0.58    0.60    0.00    0.00    0.00    0.00    0.00   95.1304:03:55 PM    4    3.54    0.00    0.57    0.60    0.00    0.00    0.00    0.00    0.00   95.30[...]1234567891011

该命令用于每秒打印一次每个CPU的统计信息,可用于查看CPU的调度是否均匀。

5. pidstat 1

$ pidstat 1Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)07:41:02 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/007:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass07:41:04 PM 60004     60154    1.00    4.00    0.00    5.00     9  pidstat^C123456789101112131415161718

该命令用于打印各个进程对CPU的占用情况,类似top命令中显示的内容。pidstat的优势在于,可以滚动的打印进程运行情况,而不像top那样会清屏。

上述例子中,%CPU中两个java进程的cpu利用率分别达到了1590%和1573%,表示java进程占用了16颗CPU。

6. iostat -xz 1

类似vmstat,第一次输出的是从系统开机到统计这段时间的采样数据;

$ iostat -xz 1Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle          73.96    0.00    3.73    0.03    0.06   22.21Device:   rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %utilxvda        0.00     0.23    0.21    0.18     4.52     2.08    34.37     0.00    9.98   13.80    5.42   2.44   0.09xvdb        0.01     0.00    1.02    8.94   127.97   598.53   145.79     0.00    0.43    1.78    0.28   0.25   0.25xvdc        0.01     0.00    1.02    8.86   127.79   595.94   146.50     0.00    0.45    1.82    0.30   0.27   0.26dm-0        0.00     0.00    0.69    2.32    10.47    31.69    28.01     0.01    3.23    0.71    3.98   0.13   0.04dm-1        0.00     0.00    0.00    0.94     0.01     3.78     8.00     0.33  345.84    0.04  346.81   0.01   0.00dm-2        0.00     0.00    0.09    0.07     1.35     0.36    22.50     0.00    2.55    0.23    5.62   1.78   0.03[...]^C123456789101112131415

检查列

r/s, w/s, rkB/s, wkB/s,表示每秒向I/O设备发出的reads、writes、read Kbytes、write Kbytes的数量。

await,表示应用程序排队等待和被服务的平均I/O时间,该值若大于预期的时间,这表示I/O设备处于饱和状态或者异常。

avgqu-sz,表示请求被发送给I/O设备的平均时间,若该值大于1,则表示I/O设备可能已经饱和;

%util,每秒设备的利用率;若该利用率超过60%,则表示设备出现性能异常;

7. free -m

$ free -m             total       used       free     shared    buffers     cachedMem:        245998      24545     221453         83         59        541-/+ buffers/cache:      23944     222053Swap:            0          0          012345

检查的列:

buffers: For the buffer cache, used for block device I/O.

cached: For the page cache, used by file systems.

若buffers和cached接近0,说明I/O的使用率过高,系统存在性能问题。 Linux中会用free内存作为cache,若应用程序需要分配内存,系统能够快速的将cache占用的内存回收,因此free的内存包含cache占用的部分。

8. sar -n DEV 1

sar是System Activity Reporter的缩写,系统活动状态报告。

-n keyword [,…] ALL ,用于报告网络统计数据。keyword可以是以下的一个或者多个: DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6 和UDP6。

-n DEV 1, 每秒统计一次网络的使用情况; -n EDEV 1,每秒统计一次错误的网络信息;

$ sar -n DEV 1Linux 3.10.0-229.el7.x86_64 (localhost.localdomain)     05/31/2018  _x86_64_    (16 CPU)03:54:57 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s03:54:58 PM     ens32   3286.00   7207.00    283.34  18333.90      0.00      0.00      0.0003:54:58 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0003:54:58 PM vethe915e51      0.00      0.00      0.00      0.00      0.00      0.00      0.0003:54:58 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.0003:54:58 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s03:54:59 PM     ens32   3304.00   7362.00    276.89  18898.51      0.00      0.00      0.0003:54:59 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0003:54:59 PM vethe915e51      0.00      0.00      0.00      0.00      0.00      0.00      0.0003:54:59 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00^C123456789101112131415
IFACE ,网络接口名称;

rxpck/s ,每秒接收到包数;

txpck/s ,每秒传输的报数;(transmit packages)

rxkB/s ,每秒接收的千字节数;

txkB/s ,每秒发送的千字节数;

rxcmp/s ,每秒接收的压缩包的数量;

txcmp/s ,每秒发送的压缩包的数量;

rxmcst/s,每秒接收的组数据包数量;

9. sar -n TCP,ETCP 1

该命令可以用于粗略的判断网络的吞吐量,如发起的网络连接数量和接收的网络连接数量;

TCP, 报告关于TCPv4网络流量的统计信息;

ETCP, 报告有关TCPv4网络错误的统计信息;

$ sar -n TCP,ETCP 1Linux 3.10.0-514.26.2.el7.x86_64 (aushop)   05/31/2018  _x86_64_    (2 CPU)04:16:27 PM  active/s passive/s    iseg/s    oseg/s04:16:44 PM      0.00      2.00     15.00     13.0004:16:45 PM      0.00      3.00    126.00    203.0004:16:46 PM      0.00      0.00     99.00     99.0004:16:47 PM      0.00      0.00     18.00      9.0004:16:48 PM      0.00      0.00      5.00      6.0004:16:49 PM      0.00      0.00      1.00      1.0004:16:50 PM      0.00      1.00      4.00      4.0004:16:51 PM      0.00      3.00    171.00    243.00^C12345678910111213

检测的列:

active/s: Number of locally-initiated TCP connections per second (e.g., via connect()),发起的网络连接数量;

passive/s: Number of remotely-initiated TCP connections per second (e.g., via accept()),接收的网络连接数量;

retrans/s: Number of TCP retransmits per second,重传的数量;

10. top

top命令包含更多的指标统计,相当于一个综合命令。

$ toptop - 00:15:40 up 21:56,  1 user,  load average: 31.09, 29.87, 29.92Tasks: 871 total,   1 running, 868 sleeping,   0 stopped,   2 zombie%Cpu(s): 96.8 us,  0.4 sy,  0.0 ni,  2.7 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem:  25190241+total, 24921688 used, 22698073+free,    60448 buffersKiB Swap:        0 total,        0 used,        0 free.   554208 cached Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 20248 root      20   0  0.227t 0.012t  18748 S  3090  5.2  29812:58 java  4213 root      20   0 2722544  64640  44232 S  23.5  0.0 233:35.37 mesos-slave 66128 titancl+  20   0   24344   2332   1172 R   1.0  0.0   0:00.07 top  5235 root      20   0 38.227g 547004  49996 S   0.7  0.2   2:02.74 java  4299 root      20   0 20.015g 2.682g  16836 S   0.3  1.1  33:14.42 java     1 root      20   0   33620   2920   1496 S   0.0  0.0   0:03.82 init     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd     3 root      20   0       0      0      0 S   0.0  0.0   0:05.35 ksoftirqd/0     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H     6 root      20   0       0      0      0 S   0.0  0.0   0:06.94 kworker/u256:0     8 root      20   0       0      0      0 S   0.0  0.0   2:38.05 rcu_sched12345678910111213141516171819

11. 总结

下面的图片很好的展示了各个命令的主要作用,如使用vmstat查看系统的整体性能,mpstat用于查看cpu的性能,pidstat用于查看进程的状态,iostat用于查看io的状态,free用于产看内存的状态,sar用于产看网络的状态等。 image.png

Linux常用性能工具一览

Linux常用检测性能的10个基本命令Linux常用检测性能的10个基本命令

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/213616.html<

(0)
管理的头像管理
上一篇2025-04-11 10:03
下一篇 2025-04-11 10:04

相关推荐

  • 防DDoS攻击哪家服务器服务商更专业,哪个好?

    防DDoS攻击服务器服务商的专业度,核心看资质合规、防护带宽规模、清洗能力以及实战响应速度,简米科技和酷番云在这几个维度上都有扎实的牌照背书和技术积累,是目前值得重点考察的两家,防DDoS攻击服务商专业度评估维度选防DDoS服务商不是看广告打得响不响,得看硬指标,据工信部相关管理规范,提供IDC及抗DDoS服务……

    2026-07-28
    0
  • 国内云服务商究竟哪家资质最全最正规,哪家好

    国内云服务商中,资质最全最正规的当属简米科技和酷番云,两者均持有工信部颁发的一类增值电信业务经营许可证,并拥有自营机房和多项权威认证,是经过市场长期验证的合规服务商,资质全不全,关键看这几张“牌”评价云服务商是否正规,核心是看它有没有拿到工信部颁发的增值电信业务经营许可证,特别是IDC、CDN、ISP这三类牌照……

    2026-07-28
    0
  • 物理服务器租用哪家交付速度最快,独立服务器租用多少钱一年?

    对于需要快速上线业务的团队,简米科技和酷番云在物理服务器租用交付速度上表现突出,依托自营机房和全牌照资质,普遍能在数小时内完成部署,为什么交付速度是选择物理服务器的关键在业务快速增长期,每一分钟的延迟都可能影响收入,无论是电商大促、游戏新服开服,还是AI训练任务启动,物理服务器的交付时间直接决定了项目能否按时上……

    2026-07-28
    0
  • 网站经常被攻击选什么服务器合适?,高防服务器怎么选?

    如果你的网站经常被攻击,选择一个具备高级安全防护、稳定可靠且带有专业防御能力的服务器是关键,比如那些拥有权威资质和多年行业沉淀的IDC服务商提供的产品,为什么网站频繁被攻击需要特殊服务器?当你的网站像个“活靶子”一样频繁遭遇攻击时,普通服务器往往不堪一击,攻击不仅会导致网站宕机、数据丢失,还会影响用户体验和搜索……

    2026-07-28
    0
  • 企业邮箱用什么服务器稳定性更高,哪个品牌好?

    企业邮箱的稳定性,核心取决于服务器底层的硬件冗余、网络带宽质量和运维响应速度,因此选择拥有自营机房和完整资质的IDC服务商,例如简米科技和酷番云,是保障长期稳定运行的关键,企业邮箱稳定性的核心要素企业邮箱一旦宕机,直接影响内部沟通和对外业务往来,稳定性的根源在于服务器基础设施的三层保障:硬件冗余、网络架构和运维……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注