赞
踩
记录MySql过多占用CPU资源的排查过程及解决方案
1、需要对项目的接口进行压力测试
2、大部分接口压测是正常的
3、只有部分接口压测时MySql对CPU的占用达到90%
压测线程数:30个
压测时间:1分钟
MySql对CPU的占用:92%
1、 使用“show full processlist”命令查看链接的使用情况
1.1、调整数据库链接池的连接数,将链接数配置多一些
1.2、再次使用“show full processlist”命令查看链接的使用情况
结果:依然没有空闲的链接
再次压测:CPU占用依然达到90%
1、使用“EXPLAIN”进行慢查询,检查sql脚本是否走了索引
检查结果:SQL脚本执行时,有一些表没走索引,导致全表扫描,影响效率
2、 为什么有索引却没有走索引
3、 进行调整,让sql在查询时走索引
4、 进行索引优化后,再次进行压测,压测时传递BeginTime和EndTIme的日期范围为一个月
第1次压测:
压测用户数:100
压测时间:1分钟
压测时Mysql对CPU的使用率:70%
第2次压测:
压测用户数:200
压测时间:1分钟
压测时Mysql对CPU的使用率:70%
结果:算是比之前好很多
控制器接口执行的SQL语句,是走全表扫描,没有走索引
对SQL进行索引优化
1、MySql服务器本身的配置问题
2、服务器硬件的问题
3、业务代码的问题
4、SQL脚本的问题
例如:除了接口基本的业务会访问数据库,后续可能还有一些统一的操作会访问数据库
1、接口业务处理结束后,插入操作日志
2、在用户登录成功后,插入登录日志
3、在用户访问接口时,插入系统日志
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。