目录
一、使用w查看系统负载
二、vmstat命令
三、top命令
四、sar命令
五、nload命令
一、使用w查看系统负载
w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。示例命令如下:
[root@minglinux-01 ~]# w
20:34:22 up 1 min, 1 user, load average: 0.15, 0.07, 0.03
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.89.1 20:34 4.00s 0.05s 0.02s w
第1行从左至右显示的信息依次为:时间、系统运行时间、登录用户数、平均负载。第2行开始的所有行则是当前登录的用户名及其登录地址等。其中最需要关注的是第1行中 load average:后面的3个数值。
第1个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数值表示15分钟内系统的平均负载值。
我们着重看第1个值,它表示单位时间段内使用CPU的活动进程数(在这里其实就是1分钟内),值越大就说明服务器压力越大。一般情况下,这个值只要不超过服务器的CPU数量就没有关系。如果服务器的CPU数量为8,那么值小于8就说明当前服务器没有压力,否则就要注意一下了。
查看当前系统有几个CPU,我们可以使用命令grep -c 'processor' /proc/cpuinfo
,processor的值是0就表示有1个逻辑cpu,值是10就表示有11个逻辑cpu;查看有几颗物理CPU时,则需要查看关键字physical id,命令为grep -c 'physical id' /proc/cpuinfo
。
[root@minglinux-01 ~]# grep -c 'processor' /proc/cpuinfo
2
[root@minglinux-01 ~]# grep -c 'physical id' /proc/cpuinfo
2
二、vmstat命令
vmstat命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。
[root@minglinux ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 1240688 2076 291800 0 0 376 74 145 435 1 2 97 0 0
使用vmstat 1 5
命令每隔1秒输出一次状态,共输出5次;使用vmstat 1
命令每隔1秒输出一次状态且一直输出,除非按Ctrl+C键结束。
[root@minglinux-01 ~]# vmstat 1 5
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 1573968 2076 158440 0 0 30 2 44 61 0 0 99 0 0
0 0 0 1573948 2076 158472 0 0 0 0 96 64 0 1 99 0 0
0 0 0 1573948 2076 158472 0 0 0 0 73 57 0 1 100 0 0
0 0 0 1573948 2076 158472 0 0 0 0 47 40 0 0 100 0 0
0 0 0 1573948 2076 158472 0 0 0 0 49 39 0 0 100 0 0
vmstat命令打印的结果共分为6部分:procs、memory、swap、io、system和cpu。请重点关注一下r、b、si、so、bi、bo这几列信息。
- procs(进程)
r(run):表示运行或等待CPU时间片的进程数。这个值也可以判断是否需要增加CPU,值如果长期大于服务器CPU的个数,则说明CPU资源不够用了。
b(block):表示等待资源的进程数,这个资源指的是I/O、内存等。该数值如果长时间大于1,则需要关注一下了。
- Memory(内存)
swpd:表示切换到交换分区中的内存数量,单位为KB。
free:表示当前空闲的内存大小,单位为KB。
buff:表示(即将写入磁盘的)缓冲大小,单位为KB。
cache:表示(从磁盘中读取的)缓存大小,单位为KB。
- swap(内存交换)
si:表示由交换区写入内存的数据量,单位为KB。
so:表示由内存写入交换区的数据量,单位为KB。
注意:当si和so两列的数值比较高并且不断变化
时,说明内存不够了。
- io(磁盘使用)
bi:表示每秒从块设备读取数据的量(读磁盘),单位为KB。
bo:表示每秒从块设备写入数据的量(写磁盘),单位为KB。
注意:如果磁盘io压力很大,这两列的数值会比较高。
- system(系统)
in:表示在某一时间间隔内观测到的每秒设备的中断次数。
cs:表示每秒产生的上下文切换次数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
- CPU(以百分比表示)
us:显示用户下所花费CPU的时间百分比。
sy:显示系统花费CPU的时间百分比。
id:表示CPU处于空闲状态的时间百分比。
wa:表示I/O等待所占用CPU的时间百分比。
st:表示被偷走的CPU所占百分比(一般都为0,不用关注)。
三、top命令
top命令用于动态监控进程所占的系统资源,每隔3秒变一次。它的特点是把占用系统资源(CPU、内存、磁盘I/O等)最高的进程放到最前面。
[root@minglinux ~]# top
top - 00:40:28 up 1:14, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 98 total, 1 running, 97 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1865252 total, 1239748 free, 331000 used, 294504 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1323556 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
526 root 20 0 298916 6232 4880 S 2.0 0.3 0:43.11 vmtoolsd
1437 root 20 0 161840 2168 1548 R 0.7 0.1 0:00.18 top
522 root 20 0 26376 1748 1440 S 0.3 0.1 0:00.12 systemd-lo+
1 root 20 0 45956 6472 4128 S 0.0 0.3 0:01.62 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.18 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
6 root 20 0 0 0 0 S 0.0 0.0 0:00.42 kworker/u2+
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:01.57 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dr+
11 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
上例中,top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)、CPU使用情况、内存使用情况以及交换分区使用情况。这些内容其实可以通过其他命令来查看,用top重点查看的还是下面的进程使用系统资源的详细状况,其中你需要关注%CPU、%MEM和COMMAND这几项所代表的意义。RES这一项为进程所占的内存大小,而%MEM这一项为使用内存的百分比。
在top状态下,默认按照cpu百分比进行排列,按Shift+m键可以按照内存使用大小排序,按数字1可以列出所有核CPU的使用状态,按q键可以退出top。
命令top -c显示详细的进程信息,示例命令如下:
[root@minglinux-01 ~]# top -c
top - 21:40:07 up 1:06, 2 users, load average: 0.00, 0.01, 0.04
Tasks: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1865276 total, 1568496 free, 134408 used, 162372 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1552140 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
569 root 20 0 298916 6228 4880 S 0.3 0.3 0:08.73 /usr/bin/+
1500 root 20 0 158804 5984 4624 S 0.3 0.3 0:00.28 sshd: roo+
1523 root 20 0 161968 2276 1632 R 0.3 0.1 0:00.02 top -c
1 root 20 0 46064 6464 4112 S 0.0 0.3 0:03.09 /usr/lib/+
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 [kthreadd]
3 root 20 0 0 0 0 S 0.0 0.0 0:00.04 [ksoftirq+
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/+
6 root 20 0 0 0 0 S 0.0 0.0 0:00.30 [kworker/+
7 root rt 0 0 0 0 S 0.0 0.0 0:00.04 [migratio+
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [rcu_bh]
9 root 20 0 0 0 0 S 0.0 0.0 0:01.17 [rcu_sche+
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [lru-add-+
11 root rt 0 0 0 0 S 0.0 0.0 0:00.05 [watchdog+
12 root rt 0 0 0 0 S 0.0 0.0 0:00.07 [watchdog+
13 root rt 0 0 0 0 S 0.0 0.0 0:00.01 [migratio+
14 root 20 0 0 0 0 S 0.0 0.0 0:00.02 [ksoftirq+
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/+
命令top -bn1,它表示非动态打印系统资源的使用情况,可以用在shell脚本中。该命令和top的唯一区别是它会一次性输出所有信息而非动态显示。示例命令如下:
[root@minglinux ~]# top -bn1 |head
top - 00:55:34 up 1:29, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 99 total, 1 running, 98 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1865252 total, 1239196 free, 331504 used, 294552 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1323052 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1440 root 20 0 161840 2072 1516 R 6.2 0.1 0:00.03 top
1 root 20 0 45956 6472 4128 S 0.0 0.3 0:01.69 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
四、sar命令
sar命令很强大,它可以监控系统几乎所有资源的状态,比如平均负载、网卡流量、磁盘状态、内存使用等。
Centos自身不带sar命令,使用yum -y install sysstat
命令安装。
初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(无需实时监控,因为不用去查询那个库文件,每隔十分钟会更新一次文件)。
sar -n DEV -f /var/log/sa/saxx 查看某一天的网卡流量历史,saxx每10分钟生成一次,是二进制文件,不能直接cat。
sar -n DEV -f /var/log/sa/sarxx sarxx文件是每天生成一次,可以直接cat查看。
[root@minglinux-01 ~]# sar
无法打开 /var/log/sa/sa23: 没有那个文件或目录
[root@minglinux-01 ~]# ls /var/log/sa
- sar -n DEV 实时网卡流量
[root@minglinux-01 ~]# sar -n DEV 1 5 //每隔1秒显示1次,显示5次
Linux 3.10.0-862.11.6.el7.x86_64 (minglinux-01) 2018年10月23日 _x86_64_ (2 CPU)
21时51分16秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
21时51分17秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时51分17秒 ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时51分17秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
21时51分18秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时51分18秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00
21时51分18秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
21时51分19秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时51分19秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00
21时51分19秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
21时51分20秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时51分20秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00
21时51分20秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
21时51分21秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
21时51分21秒 ens33 2.00 2.00 0.12 0.46 0.00 0.00 0.00
平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: ens33 1.00 1.00 0.06 0.33 0.00 0.00 0.00
IFACE这一列表示设备名称,rxpck/s这一列表示每秒进入收取的包的数量,txpck/s这一列表示每秒发送出去的包的数量,rxkB/s这一列表示每秒收取的数据量(单位为KB),txkB/s这一列表示每秒发送的数据量(后面几列不需要关注)。
- sar -q 查看历史负载
[root@minglinux-01 ~]# sar -q
Linux 3.10.0-862.11.6.el7.x86_64 (minglinux-01) 2018年10月23日 _x86_64_ (2 CPU)
21时50分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
22时00分01秒 0 116 0.01 0.02 0.05 0
平均时间: 0 116 0.01 0.02 0.05 0
- sar -b 磁盘读写
[root@minglinux-01 ~]# sar -b
Linux 3.10.0-862.11.6.el7.x86_64 (minglinux-01) 2018年10月23日 _x86_64_ (2 CPU)
21时50分01秒 tps rtps wtps bread/s bwrtn/s
22时00分01秒 0.05 0.00 0.05 0.00 0.67
平均时间: 0.05 0.00 0.05 0.00 0.67
- sar -f /var/log/sa/saxx 查看某一天的网卡流量历史,后面跟文件名
五、nload命令
sar虽然可以查看网卡流量,但是不够直观,还有一个更好用的工具,那就是nload。系统没有默认安装,使用yum install –y epel-release; yum install –y nload
命令安装。
运行nload命令如下:
[root@minglinux-01 ~]# nload
Device ens33 [192.168.89.130] (1/2):
================================================================================
Incoming:
Curr: 944.00 Bit/s
Avg: 1.27 kBit/s
Min: 944.00 Bit/s
Max: 3.45 kBit/s
Ttl: 11.61 MByte
Outgoing:
Curr: 7.98 kBit/s
Avg: 8.00 kBit/s
Min: 4.12 kBit/s
Max: 9.25 kBit/s
Ttl: 890.67 kByte
最上面一行为网卡名字以及IP地址,按向右箭头可以查看其他网卡的网络流量。输出结果分为两部分,Incoming为进入网卡的流量,Outgoing为网卡出去的流量,我们关注的当然是Curr那行的数据,其单位也可以动态自动调整,非常人性化。按q退出该界面。
网友评论