性能测试实战分享4---mysql数据库进程的CPU使用率占用很高

8 篇文章 3 订阅
2 篇文章 1 订阅

场景和现象说明:

并发30个,响应时间不达标。

监控服务器,发现cpu使用率占用一直很高且接近100%,内存使用率基本保持不变;

 

问题:响应时间平均大于2秒,最高能达到4秒多,不达标(需求平均响应时间<500毫秒);

 

监控现象:

1、服务器cpu使用率占用一直很高且接近100%;

2、服务器内存使用率基本保持不变;

3、响应时间平均大于2秒,最高能达到4秒多;

原因分析:

1、SQL语句存在大量的慢查询,导致mysql数据库进程CPU占用高;

2、再深究慢查询的SQL语句,发现使用全表查询未使用索引。

解决方案:使用索引替换全表查询方式;

分析思路:

分析客户端和服务端的性能,看是否有性能瓶颈(CPU,内存,磁盘,网络)--->CPU使用率占用一直很高且接近100%--->分析CPU占用过高的进程,发现是mysql数据库进程--->查询CPU占用高时使用的SQL语句,分析该SQL语句是不是存在慢查询问题--->最后分析SQL语句慢查询的原因(一般为使用全表查询方式,GroupBy、OrderBy排序问题)

本次测试的经验分享:

1、通过监控分析服务端的硬件性能,看是否有性能瓶颈(CPU,内存,磁盘,网络),结果:CPU使用率占用一直很高且接近100%现象,初步可定位是CPU问题。

 

2、分析CPU占用过高的进程,发现是MSQL数据库进程。

 

3、查询CPU占用高时使用的SQL语句,分析该SQL语句是不是存在慢查询问题。

(1)通过show variables like ‘slow_query_log%’来查看慢查询日志的路径。

 

(2)排查慢查询日志文件中的慢SQL语句

 

SELECT id FROM `WJJ_JOB_QRTZ_TRIGGER_LOG` WHERE !( (trigger_code in (0, 200) and handle_code = 0) OR (handle_code = 200) ) AND `alarm_status` = 0 ORDER BY id ASC;

4、最后分析SQL语句慢查询的原因。

使用expain命令,发现使用全表查询方式<ALL>(需使用索引)

 

5、性能优化。

(1)针对上面的SQL语句添加索引。

(2)如果添加了索引还是CPU占用过高,就需要优化SQL语句本身(可以考虑GroupBy、OrderBy排序问题)。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玻璃杯1992

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值