比较方便快捷查看系统负载的几个小工具
【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
【更多】
登录后可发表评论