top命令
如下例
Tasks: 550 total, 1 running, 549 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 98.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 39467241+total, 4412548 free, 18383633+used, 20642352+buff/cache
KiB Swap: 0 total, 0 free, 0 used. 20441100+avail Mem
CPU各项指标说明
0.0 us
用户程序,在运行过程中,使用的CPU时间的占比。
我们希望的是越高越好,尽量控制在90%
0.0 sy
控制: 资源管理,内核的工作(系统调用)
sys高的原因:
1. bug
2. 锁的问题
99.9 id
CPU空间的时间占比
0.0 wa
CPU花在等待上的时间
wa高的原因:
1. 锁
2. IO (raid,过度条带化)
3. 索引
多cpu使用情况监控:
主要判断我们cpu多核心有没有被充分利用。
现象:单颗很忙,其他很闲,对于MySQL来讲,有可能是并发参数设定不合理导致的。
MEM
KiB Mem : 39467241+total, 4412548 free, 18383633+used, 20642352+buff/cache
### 1.2.1 名称介绍
total :总内存大小
free :空闲的
used :在使用的
buff/cache :缓冲区 和 缓存
1. 内存的可用空间的计算 free +buffer cache
2. 内存回收(buffer)的方式:
(1) 写入磁盘
(2) swap
对于数据库来讲:需要将swap屏蔽掉
KiB Swap: 0 total, 0 free, 0 used. 20441100+avail Mem
Linux 6操作系统,默认回收策略(buffer cache),不立即回收策略
内存使用达到100%-60%时候,40% 会使用swap
Linux 7操作系统
内存使用达到100%-30%(70%)时候,才会时候swap
cat /proc/sys/vm/swappiness
10
echo 0 >/proc/sys/vm/swappiness 的内容改成0(临时)
vim /etc/sysctl.conf
添加:
vm.swappiness=0
sysctl -p
iostat 命令
iostat -dk 1
现象说明
1. IO 高 cpu us 也高,属于正常现象
2. CPU us高 IO很低 ,MySQL 不在做增删改查,有可能是存储过程,函数,排序,分组,多表连接
3. Wait,SYS 高 , IO低:IO出问题了,锁等待过多的几率比较大.
IOPS:每秒磁盘最多能够发生的IO次数,这是个定值
频繁小事务,IOPS很高,达到阈值,可能IO吞吐量没超过IO最大吞吐量.无法新的IO了
存储规划有问题.
iostat -x 1
从上面的截图可以清晰的看到,读的比例低于写的比例,说明系统倾向于写会更多,读的会少一些。从后面的%util来看,在读和写一起发生的时候,%util的值会有一些变化,同时这个值也不是很高,对这个实例从收集的信息来看,数据库实例的负载不是很高,系统正在平稳的运行。
vmstat命令
vmstat 1
1 标红的是r和b,r表示procs的队列等待,b代表的是procs被阻塞,下面的数字是什么,就代表阻塞了几个.
2 绿色标记的cpu的idle百分比,出现100说明系统的负载现在很低,也是数据库压力小的一个表现。
sar命令
sar -p
标红的%idle:表明cpu运行的很空闲,有大量的cpu资源在空闲,这从机器资源方面也能看的出业务不是很繁忙。
free -h命令
从巡检到信息来看剩余的空闲内存还有10G,在结合前面巡检到的cpu和io的信息,确定目前32G的内存满足系统运行的需求。如果监控发现swap过了一段时间持续增长,就需要添加物力资源,比如说(内存)。