现象:
1、同样的一个select col... from tabname;在A虚拟机查询15ms;在生产B机上500ms。虽然时间都在1S之内,但是差的倍数特别多;
分析过程:
1、查看两边的表结构,一致;
2、查看两边的执行计划,一致;
3、vmstat 1查看两边操作系统的性能,A机的idle在95%以上;B级的idle几乎长期为0;
4、onstat -g glo 发现A机的VP 有25个;B机的VP有22个;
5、A虚拟机只有一个虚拟CPU;B虚拟机有8个虚拟CPU;
6、B机的uptime中的load average可以达到18;A机只有不到1;
根据之前在极客时间学习的LINUX性能优化,可以理解为B机上idle几乎为0的原因是正在运行和不可中断的进程数远大于CPU的数量所致。
优化策略:
1、启用DIRECT_IO=1 ,因为KAIO会用CPU VP,而AIO用的是AIO VP;
2、AUTO_TUNE=0,关闭自动调整;
3、新增VPCLASS aio,num=4,noage 设置AIO VP的数量;
4、VPCLASS cpu,num=4,noage 降低CPU VP的数量
5、重启数据库,发现VP的数量下降到13,而操作系统CPU的idle也提高到了95%以上。