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过了一段时间持续增长,就需要添加物力资源,比如说(内存)。