10.1 使用w查看系统负载
10.2 vmstat命令
10.3 top命令
10.4 sar命令
10.5 nload命令
监控系统状态
w
我们常用w
查看系统负载。
[root@localhost ~]# w
16:49:11 up 6:18, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.56.1 10:31 4:58m 14.08s 0.46s -bash
root pts/1 192.168.56.1 16:49 4.00s 0.01s 0.01s w
第一行依次是:时间,系统启动时间,用户数,系统负载。下面是登录用户等信息。
系统负载是一段时间内使用cpu的进程数,w命令列出了三个,分别是1分钟、5分钟、15分钟的负载。负载多少就算超标了?一般不要超过逻辑cpu数量为宜。cat /proc/cpuinfo
查看cpu信息。
此外还有uptime命令,其显示的和w命令第一行一样。
vmstat
如果w
命令查看负载大说明cpu不够用,我们需要进一步查看系统运行的瓶颈。vmstat可以监控系统具体指标。用法:vmstat 1
,也可以vmstat 1 5
显示5次:
[root@localhost ~]# 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
2 0 11264 73104 0 393116 0 1 18 18 33 64 0 0 100 0 0
0 0 11264 73080 0 393116 0 0 0 0 27 48 0 0 100 0 0
0 0 11264 73080 0 393116 0 0 0 1 23 44 0 0 100 0 0
0 0 11264 73080 0 393116 0 0 0 0 21 46 0 1 99 0 0
0 0 11264 73080 0 393116 0 0 0 0 15 34 0 0 100 0 0
[root@localhost ~]#
procs memory swap io system cpu 依次是进程、内存、交换分区、磁盘读写、系统、cpu。
关键的几列:r,b,swap,si,so,bi,bo,us,wa:
- r 即run,正在运行的进程数
- b 即block,等待的进程树
- si 从交换分区写入内存
- io 从内存写入交换分区
- bi 从磁盘写入内存
- bo 从内存写入磁盘
- us 用户态占用百分比,另外sy是系统态占用,id是空闲
- wa 等待的百分数
cpu运行,一个时间下只能处理一个任务,多任务是轮流处理进程实现的。所以就会有“排队的进程”。
top
top是用来查看进程使用资源情况的工具。通过vmstat知道系统瓶颈,进一步用top查看具体进程运行情况。top
命令会动态显示,每3s刷新一次。
默认以cpu使用排序,按M则以内存排序,按P则以cpu排序,按1显示所有cpu,再按1返回汇总cpu。q退出。RES物理内存大小(KiB)。我们主要关注cpu和mem百分比,和列表上面的负载、cpu百分数。
在%cpu一行中,us是用户态占用百分数,sy是系统态占用,ni、hi、si不用关注(常为0),id为空闲,st被偷走的cpu(如果linux上运行虚拟软件会用到)。
负载和cpu使用的关系:从定义上理解,负载关注进程数,%cpu关注cpu使用率。两者有关联,也不完全现行相关。比如网络很慢,这时会有许多进程等待,可能高负载但cpu没有跑足。
top -c
显示详细的进程信息。top -bn1
静态显示所有进程,适合写脚本时用。
sar
sar是系统管理的瑞士军刀,我主要用来监控流量,其他功能可以慢慢研究。
如果系统没有sar命令,yum install -y sysstat
。
sar
在没有指定选项时会调取/var/log/sa日志。
监控网卡流量使用sar -n DEV
:
[root@localhost ~]# sar -n DEV
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain) 2018年10月15日 _x86_64_ (1 CPU)
10时17分41秒 LINUX RESTART
10时20分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10时30分01秒 enp0s3 420.91 39.20 612.90 2.33 0.00 0.00 0.00
10时30分01秒 enp0s8 2.42 2.13 0.18 1.05 0.00 0.00 0.00
10时30分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: enp0s3 420.91 39.20 612.90 2.33 0.00 0.00 0.00
平均时间: enp0s8 2.42 2.13 0.18 1.05 0.00 0.00 0.00
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
后三列用的不多。rxpck/s是每秒接收数据包,txpck/s每秒发送数据包,rxkB/s每秒接收数据,txkB/s每秒发送数据。一般数据包几千,上万的话可能被攻击。
上面说sar是瑞士军刀,它还可以查看负载、磁盘读写等。sar -q
系统负载,sar -b
磁盘读写。sar每10分钟写入一次系统状态。/var/log/sa就是其日志,使用sar -f /var/log/sa/saxx
查看。xx为日期,这个目录内文件保留一个月。需要注意的是saxx是二进制文件,只能用sar查看,目录下还有sarxx文件,是普通文件。
sar每10分钟记录一次系统状态,有时想实时查看网卡流量就用到nload命令。
centos默认没有安装nload:
yum install -y epel-release
yum install -y nload
第一行显示了网卡名称、ip和网卡数量。按左右键切换网卡。下面图形上面是进入计算机incoming,下面是出计算机outgoing。vps买带宽一般指outgoing的带宽。