系统层面优化工具
CPU
【top命令】 【cpu使用情况的平均值】 【CPU每个核心的分别使用的情况(按1)】 【程序是如何使用CPU的】 系统给每个程序分配CPU的时候,以时间来划分表的。 【CPU介绍】 计算: 程序运行,数据处理,二进制计算 控制: 资源管理-OS Kernel(系统调用)--硬件,少量的关于申请资源和释放资源等,控制在CPU可控范围内。 寄存器(L1L2L3) 【CPU分配】 系统给每个程序分配CPU的时候,以时间来划分的。 【CPU各项指标说明】 0.0 us(越高越好) 用户程序,在运行过程中,使用的CPU时间的占比。 我们希望的是越高越好,尽量控制在90% ----------------------------------------- 0.0 sy(越底越好)(一般10%以内) 控制: 资源管理,内核的工作(系统调用) sys高的原因: 1. bug ,中病毒了 2. 锁的问题 ----------------------------------------- 99.9 id CPU空间的时间占比 ----------------------------------------- 0.0 wa(一般10%以内) CPU花在等待上的时间 wa高的原因: 1. 锁 2. IO (raid,过度条带化) 3. 索引 多核cpu使用情况监控: 主要判断我们cpu多核心有没有被充分利用。 现象:单颗很忙,其他很闲,对于MySQL来讲,有可能是并发参数设定不合理导致的。
内存MEM
KiB Mem : 4028432 total, 3774464 free, 116240 used, 137728 buff/cache total :总内存大小 free :空闲的 used :在使用的 buff/cache :缓冲区 和 缓存 [root@db01 conf]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 48G 6.6G 42G 14% / devtmpfs ----------------------------------------- 内存管理子系统 slab Allocator buddy system 程序=指令+数据 对于page cache来讲(OS buffer) 1. 内存的可用空间的计算 free +buffer cache 2. 内存回收(buffer)的方式: (1) 写入磁盘 (2) swap 对于数据库来讲:需要将swap屏蔽掉
swap
KiB Swap: 2097148 total, 2097148 free, 0 used. 3701464 avail Mem Linux 6操作系统,默认回收策略(buffer cache),不立即回收策略 内存使用达到100%-60%时候,40% 会使用swap Linux 7操作系统 内存使用达到100%-30%(70%)时候,才会使用swap cat /proc/sys/vm/swappiness 30 echo 0 >/proc/sys/vm/swappiness 的内容改成0(临时)仅限mysql服务器 vim /etc/sysctl.conf 添加: vm.swappiness=0 sysctl -p
iostat 命令
[root@db01 ~]# yum install -y sysstat dd if=/dev/zero of=/tmp/bigfile bs=1M count=4096 iostat -dm 1 现象说明 1. IO 高 cpu us 也高,属于正常现象 2. CPU us高 IO很低 ,MySQL 不在做增删改查,有可能是存储过程,函数,排序,分组,多表连接 3. Wait,SYS 高 , IO低:IO出问题了,锁等待过多的几率比较大. IOPS:每秒磁盘最多能够发生的IO次数,这是个定值 频繁小事务,IOPS很高,达到阈值,可能IO吞吐量没超过IO最大吞吐量.无法新的IO了 存储规划有问题.
优化工具汇总
系统:top、iostat
数据库优化工具
show status show variables show index show processlist show slave status show engine innodb status desc /explain slowlog
扩展类深度优化
mysqldumpslow pt系列(pt-toolkits) mysqlslap sysbench information_schema performance_schema sys