Linux 常用性能检测命令


比较方便快捷查看系统负载的几个小工具

【uptime】

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

[root@wzxaini9 /]# uptime
 16:15:01 up 52 days, 19:53,  2 users,  load average: 0.05, 0.07, 0.05


【dmesg | tail】

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

[root@wzxaini9 /]# 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.

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


【vmstat 1】

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

[root@wzxaini9 /]# 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      0  94580 232784 1276628    0    0     5    17    5    7  1  0 98  0  0
 0  0      0  94172 232784 1276632    0    0     4     0  211  384  2  2 94  2  0
 0  0      0  94172 232784 1276636    0    0     0   124  283  474  1  1 97  1  0
 0  0      0  94208 232784 1276636    0    0     0     0  273  478  0  1 99  0  0

    vmstat的格式如下

vmstat [options] [delay [count]]

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

[root@wzxaini9 /]# vmstat 10 3
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      0  93976 232812 1277304    0    0     5    17    5    7  1  0 98  0  0
 0  0      0  93480 232812 1277400    0    0     6     9  178  310  1  1 98  1  0
 0  0      0  93356 232820 1277452    0    0     2    15  179  319  1  1 98  1  0

    上述的例子中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可能存在瓶颈或异常;


【mpstat -P ALL 1】

[root@wzxaini9 /]# mpstat -P ALL 1
Linux 4.4.24-2.al7.x86_64 (wzxaini9) 	08/07/2019 	_x86_64_	(8 CPU)

04:21:16 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:21:17 PM  all    3.26    0.00    2.38    0.00    0.00    0.00    0.00    0.00    0.00   94.36
04:21:17 PM    0    8.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00    0.00   86.00
04:21:17 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:21:17 PM    2    1.00    0.00    2.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
04:21:17 PM    3    1.01    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.99
04:21:17 PM    4    4.04    0.00    8.08    0.00    0.00    0.00    0.00    0.00    0.00   87.88
04:21:17 PM    5    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
04:21:17 PM    6    1.00    1.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
04:21:17 PM    7    8.08    0.00    2.02    0.00    0.00    0.00    0.00    0.00    0.00   89.90

04:21:17 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:21:18 PM  all    2.88    0.00    1.88    0.13    0.00    0.13    0.00    0.00    0.00   94.99
04:21:18 PM    0    9.09    0.00    4.04    0.00    0.00    1.01    0.00    0.00    0.00   85.86
04:21:18 PM    1    2.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
04:21:18 PM    2    1.01    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   97.98
04:21:18 PM    3    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
04:21:18 PM    4    6.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00    0.00   90.00
04:21:18 PM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:21:18 PM    6    5.94    0.00    5.94    0.00    0.00    0.00    0.00    0.00    0.00   88.12
04:21:18 PM    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

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


【pidstat 1】

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

[root@wzxaini9 /]# pidstat 1
Linux 4.4.24-2.al7.x86_64 (wzxaini9) 	08/07/2019 	_x86_64_	(8 CPU)

04:22:40 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
04:22:41 PM     0         7    0.00    0.99    0.00    0.99     0  rcu_sched
04:22:41 PM     0      7521    0.99    0.00    0.00    0.99     0  AliYunDun
04:22:41 PM     0     20383    0.00    0.99    0.00    0.99     0  pidstat
04:22:41 PM  1000     20384   14.85    5.94    0.00   20.79     5  php
04:22:41 PM  1000     20385   13.86    5.94    0.00   19.80     0  php
04:22:41 PM  1000     20402   10.89    3.96    0.00   14.85     4  php
04:22:41 PM     0     25735    0.99    0.00    0.00    0.99     2  supervisord
04:22:41 PM     0     31113    1.98    0.99    0.00    2.97     0  titanagent
04:22:41 PM     0     31138    0.00    1.98    0.00    1.98     6  titan_monitor

04:22:41 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
04:22:42 PM     0      3868    2.00    1.00    0.00    3.00     1  java
04:22:42 PM     0     20383    0.00    1.00    0.00    1.00     2  pidstat
04:22:42 PM  1000     20402    3.00    1.00    0.00    4.00     0  php
04:22:42 PM  1000     20415    9.00    1.00    0.00   10.00     6  php
04:22:42 PM     0     31113    2.00    1.00    0.00    3.00     4  titanagent

    上述例子中,%CPU中两个php进程的cpu利用率分别达到了3%和9%,表示php进程占用了1颗CPU。


【iostat -xz 1】

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

[root@wzxaini9 /]# iostat -xz 1
Linux 4.4.24-2.al7.x86_64 (wzxaini9) 	08/07/2019 	_x86_64_	(8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.86    0.00    0.66    0.01    0.00   98.47

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     4.53    0.08    4.70     1.64    37.48    16.38     0.02    3.47    2.75    3.48   0.25   0.12

    检查列

        ·    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%,则表示设备出现性能异常;


【free -m】

查询可用内存

[root@wzxaini9 /]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1838         271          65           8        1500        1357
Swap:             0           0           0

    检查的列:

        ·    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占用的部分。


【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,每秒统计一次错误的网络信息;

[root@wzxaini9 /]#  sar -n DEV 1
Linux 4.4.24-2.al7.x86_64 (wzxaini9) 	08/07/2019 	_x86_64_	(8 CPU)

04:41:21 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
04:41:22 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:41:22 PM      eth0    432.00    410.00    175.15     66.21      0.00      0.00      0.00

04:41:22 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
04:41:23 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
04:41:23 PM      eth0    210.00    190.00     67.39     28.81      0.00      0.00      0.00

04:41:23 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
04:41:24 PM        lo      3.00      3.00      0.15      0.15      0.00      0.00      0.00
04:41:24 PM      eth0    302.00    281.00    117.16     53.62      0.00      0.00      0.00

    IFACE ,网络接口名称;

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

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

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

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

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

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

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


【sar -n TCP,ETCP 1】

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

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

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

[root@wzxaini9 /]# sar -n TCP,ETCP 1
Linux 4.4.24-2.al7.x86_64 (wzxaini9) 	08/07/2019 	_x86_64_	(8 CPU)

04:45:20 PM  active/s passive/s    iseg/s    oseg/s
04:45:21 PM      3.00      9.00     65.00     70.00

04:45:20 PM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
04:45:21 PM      0.00      4.00      0.00      0.00      0.00

04:45:21 PM  active/s passive/s    iseg/s    oseg/s
04:45:22 PM      6.00     15.00    420.00    407.00

04:45:21 PM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
04:45:22 PM      0.00      4.00      0.00      0.00      0.00

检测的列:

active/s: 发起的网络连接数量;

passive/s: 接收的网络连接数量;

retrans/s: 重传的数量;


【htop】

    Htop是一款运行于Linux系统监控与进程管理软件,用于取代Unix下传统的top。与top只提供最消耗资源的进程列表不同,htop提供所有进程的列表,并且使用彩色标识出处理器、swap和内存状态。

[root@wzxaini9 /]# htop


【更多】

image.png

上一篇

评论

登录后可发表评论