10.1 监控系统的状态
查看当前系统的负载:w
uptime
w
命令查看的是系统整体上的负载。
# w
10:42:38 up 7 min, 1 user, load average: 0.16, 0.08, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.100.1 10:36 6.00s 0.04s 0.02s w
上面,
第1行从左到右显示的信息依次为:时间、系统运行时间、登录用户数、平均负载;
第2行显示的是当前登录的用户及其登录地址等。
uptime
命令也可以显示上面第1行的内容:
# uptime
11:30:06 up 54 min, 1 user, load average: 0.00, 0.01, 0.05
重点关注load average
:
第1个数值表示1分钟内系统的平均负载值(该值越大说明服务器压力越大)
第2个数值表示5分钟内系统的平均负载值
第3个数值表示15分钟内系统的平均负载值
一般情况下,第1个值不超过服务器的CPU数量就没问题。
查看服务器的CPU数量:
# cat /proc/cpuinfo
或者这样查看:
[root@localhost ~]# grep -c 'precessor' /proc/cpuinfo
0
在linux中,服务器有2*n
个CPU(n为单颗物理CPU上有n核)。如果n是4,则查看/proc/cpuinfo
这个文件会显示8段类似信息,最后一段的processor
后面会显示为7。
监控系统的状态:vmstat
vmstat
命令显示的结果分为6部分:procs
、memory
、swap
、io
、system
和cpu
。
# vmstat
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 1556704 2076 168336 0 0 12 1 20 16 0 0 100 0 0
procs
——显示进程的相关信息
r(run)
:表示运行或等待CPU时间片的进程数;
b(block)
:表示等待资源的进程数,资源指的是I/O、内存等。
memory
——显示内存的相关信息
swpd
:表示切换到交换分区中的内存数量,单位为KB,该值波动时说明内存不足;
free
:表示当前空闲的内存数量,单位为KB;
buff
:表示(即将写入磁盘的)缓冲大小,单位为KB;
cache
:表示(从磁盘读取的)缓存大小,单位为KB。
swap
——显示内存的交换情况
si
:表示由交换区写入内存的数据量,单位为KB;
so
:表示由内存写入交换区的数据量,单位为KB。
io
——显示内存的交换情况
bi
:表示从块设备读取数据的量(磁盘→内存),单位为KB;
bo
:表示从块设备写入数据的量(内存→磁盘),单位为KB。
system
——显示采集间隔内发生的中断次数
in
:表示在某一时间间隔内观测到的每秒设备的中断次数;
cd
:表示每秒产生的上下文切换次数。
cpu
——显示CPU的使用状态
us
:表示用户下所花费CPU的时间百分比(通常us<=10
比较合适);
sy
:表示系统花费CPU的时间百分比(sy与us呈正相关);
id
:表示CPU处于空闲状态的时间百分比;
wa
:表示I/O等待所占用CPU的时间百分比;
st
:表示被偷走的CPU所占的时间百分比(一般为0)。
us + sy + id = 100%
重点关注r
、b
、si
、so
、bi
、bo
、us
和wa
这几列信息。
vmstat n m
表示动态输出,每n秒输出一次,共输出m次。
# 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 1556356 2076 168376 0 0 6 0 13 11 0 0 100 0 0
0 0 0 1556356 2076 168376 0 0 0 0 84 61 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 81 70 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 62 55 0 0 100 0 0
1 0 0 1556340 2076 168376 0 0 0 0 80 73 0 0 100 0 0
可以看到,vmstat 1 5
表示每1秒输出一次,共输出5次。
# 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
1 0 0 1556340 2076 168376 0 0 6 0 13 11 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 85 69 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 68 60 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 60 54 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 77 68 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 67 61 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 69 62 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 73 61 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 67 62 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 73 68 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 67 60 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 60 53 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 69 62 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 68 61 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 72 63 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 48 44 40 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 29 22 0 0 100 0 0
0 0 0 1556340 2076 168376 0 0 0 0 41 29 0 0 100 0 0
^Z
[1]+ 已停止 vmstat 1
vmstat 1
表示每1秒输出一次,且一直输出,除非按Ctrl+Z中止或Ctrl+C结束。
显示进程所占用的系统资源:top/htop
top
命令用于动态监控进程所占的系统资源,每3秒刷新一次,默认把占用系统资源(CPU、内存、磁盘I/O等)最高的进程放在最上面。
top - 14:17:19 up 3:41, 1 user, load average: 0.00, 0.02, 0.05
Tasks: 113 total, 2 running, 111 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 : 1865308 total, 1370480 free, 139216 used, 355612 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1532752 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1811 root 20 0 161944 2200 1548 R 0.3 0.1 0:00.10 top
1 root 20 0 193492 6592 4128 S 0.0 0.4 0:01.99 systemd
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:00.03 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:00.61 kworker/u256:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.37 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:00.48 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.08 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.08 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 0:00.31 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/1
15 root 20 0 0 0 0 S 0.0 0.0 0:00.34 kworker/1:0
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
17 root rt 0 0 0 0 S 0.0 0.0 0:00.10 watchdog/2
上面左上角显示CPU、内存、交换区的使用情况,右边显示任务、负载、开机时间&#