目录
系统负荷(load average)
## 查看系统负载
uptime
输出:
11:54:03 up 759 days, 12:59, 212 users, load average: 21.52, 18.95, 22.02
其中 load average就是“系统的平均负荷”。这三个数字分别是 1分钟、5分钟、15分钟内系统的平均负荷。
系统所能承受的负荷最大值 = 总逻辑核心数
每个逻辑核的平均负荷值(V) = 系统平均负荷值 / 总逻辑核心数
- 如果 1分钟的系统负荷 V 大于 1.0,其它两个时间都小于 1.0,表明这只是暂时现象,问题不大。
- 如果 15分钟的系统负荷 V 大于 1.0,说明该现象一直存在,需要解决问题,把该值降下来。
- 当 V 值大于 0.7 时,就要引起关注,必须排查问题,防止情况恶化。
CPU、内存使用情况(vmstat)
## 1秒打印一次,一共打印5次
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
-
r:表示运行的进程数量(建议值不要大于逻辑cpu核数)
-
b:表示阻塞的进程数量
-
si:每秒从磁盘读取虚拟内存的大小(如果大于 0,表示物理内存不够用)
-
so:每秒虚拟内存写入磁盘的大小
-
bi:块设备每秒接收的块数量
-
bo:块设备每秒发送的块数量
-
in:每秒cpu的中断次数,包括时间中断
-
cs:每秒上下文切换次数(包括:函数调用、线程切换),该值越小越好
-
us:用户(用户程序)cpu时间
-
sy:系统(内核程序)cpu时间
-
id:cpu处于空闲时间的比例
-
wa:cpu等待IO时间的比例
-
st:丢失时间,也就是虚拟cpu等待实际cpu的时间百分比
磁盘IO(iostat、iotop)
## 1秒打印一次,一共打印5次
iostat -x 1 5
输出:
avg-cpu: %user %nice %system %iowait %steal %idle
8.18 0.00 2.51 4.20 0.00 85.12
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
-
r/s:delta(rio)/s,每秒完成的读 I/O 设备次数
-
w/s:delta(wio)/s,每秒完成的写 I/O 设备次数
-
rsec/s:delta(rsect)/s,每秒读扇区数
-
wsec/s:delta(wsect)/s,每秒写扇区数
-
rkB/s:每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节(需要计算)
-
wkB/s:每秒写K字节数。是 wsect/s 的一半(需要计算)
-
rrqm/s:delta(rmerge)/s,每秒进行 merge 的读操作数目
-
wrqm/s:delta(wmerge)/s,每秒进行 merge 的写操作数目
-
%rrqm:读请求在merge后占merge前的百分比
-
%wrqm:写请求在merge后占merge前的百分比
-
r_await:每个读操作平均所需的时间。不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间
-
w_await:每个写操作平均所需的时间。不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间
-
aqu-sz:平均请求队列长度
-
rareq-sz:平均读请求的大小
-
wareq-sz:平均写请求的大小
-
avgrq-sz:平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
-
avgqu-sz:平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
-
await:平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
-
svctm:平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
-
%util:一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
## 按 p 键把TID变成PID,按 o 键显示当前活跃的进程
iotop
输出:
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
网络IO(iftop)
## 查看网络的使用情况
iftop -n
## 查看某个IP的连接,找到连接对应的PID(进程id),也就是该进程对应的网络IO
netstat -antop |grep 10.0.0.1
输出:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer