阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux运维必备的Linux性能检测常用命令汇总!

173次阅读
没有评论

共计 7386 个字符,预计需要花费 19 分钟才能阅读完成。

今天马哥教育要跟大家分享的文章是关于 Linux 运维 必备的 Linux 性能检测常用命令汇总。为了帮助大家更好的学习和掌握 Linux 运维技巧,今天为大家带来了这篇文章,下面让我们一起来看一看吧,希望能够对 Linux 入门 小伙伴们有所帮助。

01、uptime

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

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

02、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 可以快速判断是否有导致系统性能异常的问题。

03、vmstat 1

$ 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
34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  0
32  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  0
32  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  0
32  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  0
32  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 3
procs -----------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 可能存在瓶颈或异常;

04、mpstat – P ALL 1

$ mpstat -P ALL
Linux 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   %idle
04:03:55 PM  all    3.67    0.00    0.61    0.71    0.00    0.00    0.00    0.00    0.00   95.02
04:03:55 PM    0    3.52    0.00    0.57    0.76    0.00    0.00    0.00    0.00    0.00   95.15
04:03:55 PM    1    3.83    0.00    0.61    0.71    0.00    0.00    0.00    0.00    0.00   94.85
04:03:55 PM    2    3.80    0.00    0.61    0.60    0.00    0.00    0.00    0.00    0.00   94.99
04:03:55 PM    3    3.68    0.00    0.58    0.60    0.00    0.00    0.00    0.00    0.00   95.13
04: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

05、pidstat 1

$ pidstat 1
Linux 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  Command
07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/0
07:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave
07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java
07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java
07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java
07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat

07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave
07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java
07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java
07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass
07: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。

06、iostat – xz 1

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

$ iostat -xz 1
Linux 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.21

Device:   rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda        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.09
xvdb        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.25
xvdc        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.26
dm-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.04
dm-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.00
dm-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%,则表示设备出现性能异常;

07、free – m

$ free -m
             total       used       free     shared    buffers     cached
Mem:        245998      24545     221453         83         59        541
-/+ buffers/cache:      23944     222053
Swap:            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 占用的部分。

08、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 1
Linux 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/s
03:54:58 PM     ens32   3286.00   7207.00    283.34  18333.90      0.00      0.00      0.00
03:54:58 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:54:58 PM vethe915e51      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:54:58 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:54:58 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:54:59 PM     ens32   3304.00   7362.00    276.89  18898.51      0.00      0.00      0.00
03:54:59 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:54:59 PM vethe915e51      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03: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,每秒接收的组数据包数量;

09、sar -n TCP,ETCP 1

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

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

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

$ sar -n TCP,ETCP 1
Linux 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/s
04:16:44 PM      0.00      2.00     15.00     13.00
04:16:45 PM      0.00      3.00    126.00    203.00
04:16:46 PM      0.00      0.00     99.00     99.00
04:16:47 PM      0.00      0.00     18.00      9.00
04:16:48 PM      0.00      0.00      5.00      6.00
04:16:49 PM      0.00      0.00      1.00      1.00
04:16:50 PM      0.00      1.00      4.00      4.00
04: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 命令包含更多的指标统计,相当于一个综合命令。

$ top
top - 00:15:40 up 21:56,  1 user,  load average: 31.09, 29.87, 29.92
Tasks: 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 st
KiB Mem:  25190241+total, 24921688 used, 22698073+free,    60448 buffers
KiB 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

总结:

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

Linux 运维必备的 Linux 性能检测常用命令汇总!

Linux 常用性能工具一览

Linux 运维必备的 Linux 性能检测常用命令汇总!

以上就是马哥教育今天为大家分享的关于 Linux 运维必备的 Linux 性能检测常用命令汇总的文章,希望本篇文章能够对正在从事 Linux 运维工作的小伙伴们有所帮助想要了解更多 Linux 相关知识记得关注马哥教育官网。最后祝愿小伙伴们工作顺利!

声明:文章来源于网络,侵删!

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计7386字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中