接口压测时MySql对CPU占用过高


记录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%

在这里插入图片描述

二、压测时MySql的CPU占用过高,一般都是先进行SQL慢查询,再进行索引优化

1、使用“EXPLAIN”进行慢查询,检查sql脚本是否走了索引

在这里插入图片描述

检查结果:SQL脚本执行时,有一些表没走索引,导致全表扫描,影响效率

2、 为什么有索引却没有走索引

在这里插入图片描述

3、 进行调整,让sql在查询时走索引

在这里插入图片描述

4、 进行索引优化后,再次进行压测,压测时传递BeginTime和EndTIme的日期范围为一个月

第1次压测:
压测用户数:100
压测时间:1分钟
压测时Mysql对CPU的使用率:70%

第2次压测:
压测用户数:200
压测时间:1分钟
压测时Mysql对CPU的使用率:70%

结果:算是比之前好很多


原因

控制器接口执行的SQL语句,是走全表扫描,没有走索引


解决

对SQL进行索引优化

补充:MySql对CPU占用过高的原因

1、MySql服务器本身的配置问题
2、服务器硬件的问题
3、业务代码的问题
4、SQL脚本的问题
 

补充:MySql对CPU占用过高的场景

例如:除了接口基本的业务会访问数据库,后续可能还有一些统一的操作会访问数据库
1、接口业务处理结束后,插入操作日志
2、在用户登录成功后,插入登录日志
3、在用户访问接口时,插入系统日志

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值