今天给大家介绍一下常用检测性能的10个基本命令。
1. uptime
$ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02
该命令可以大致的看出计算机的整体负载情况,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 process18694 (perl) score246or sacrifice child [1880957.563408] Killed process18694 (perl) total-vm:1972392kB, anon-rss:1953348kB,file-rss:0kB [2320864.954447] TCP: Possible SYN floodingon port7001. Dropping request. Check SNMP counters.
打印内核环形缓存区中的内容,可以用来查看一些错误;
上面的例子中,显示进程18694 因引内存越界被kill掉以及TCP request被丢弃的错误。通过dmesg可以快速判断是否有导致系统性能异常的问题。
3. vmstat 1
$ vmstat1 procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu----- rb swpd free buff cache siso bibo incs ussy idwast 34 0 0 200889792 73708 591828 0 0 0 5 610961300 32 0 0 200889920 73708 591860 0 0 0 592 132844282981100 32 0 0 200890112 73708 591860 0 0 0 0 95012154991000 32 0 0 200889568 73712 591856 0 0 0 48 119002459990000 32 0 0 200890208 73712 591860 0 0 0 0 158984840981100
打印进程、内存、交换分区、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 0
上述的例子中delay设置为10,count设置为3,表示每行打印10秒内的平均值,只打印3次。
需要检查的列
4. 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 [...]
该命令用于每秒打印一次每个CPU的统计信息,可用于查看CPU的调度是否均匀。
5. 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 ^C
该命令用于打印各个进程对CPU的占用情况,类似top命令中显示的内容。pidstat的优势在于,可以滚动的打印进程运行情况,而不像top那样会清屏。
上述例子中,%CPU中两个java进程的cpu利用率分别达到了1590%和1573%,表示java进程占用了16颗CPU。
6. 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 [...]^C
检查列
7. free -m
$ free -m total used free shared buffers cached Mem: 245998 24545 221453 83 59 541 -/+ buffers/cache: 23944 222053 Swap: 0 0 0
检查的列:
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。
$ 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.003: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/s 03: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 ^C
9. sar -n TCP,ETCP 1
该命令可以用于粗略的判断网络的吞吐量,如发起的网络连接数量和接收的网络连接数量;
$ 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/s04: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 ^C
检测的列:
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_sched
11. 总结
下面的图片很好的展示了各个命令的主要作用,如使用vmstat查看系统的整体性能,mpstat用于查看cpu的性能,pidstat用于查看进程的状态,iostat用于查看io的状态,free用于产看内存的状态,sar用于产看网络的状态等。
原文:https://medium.com/netflix-te...
如有错误或其它问题,欢迎小伙伴留言评论、指正。如有帮助,欢迎点赞+转发分享。
欢迎大家关注民工哥的公众号:民工哥技术之路