压测导致mysql数据库CPU很高_排查压测问题引发的系统性能调优过程

f2391e69e86275015aea376ac2221611.png

前言:今天测试部门的小梦找到我,委屈巴巴的说我写的接口有问题,因为她对这个接口进行压力测试时,发现系统的吞吐量一直上不去,并且 应用服务器 (部署接口项目的服务器) 的CPU、内存等资源的使用率也一直很低,导致一直无法测试出这个接口的压力峰值。

53f1bae9274d81d4648f704daa2c22ae.png听小梦说完后,自己心想接口都测试了好几遍了,接口代码 绝对不可能有问题的,再说了,有问题也不能承认呀,看来得往别的地方上扯扯呀;然后我说道,接口应该是没问题的,可能是项目环境部署时有些参数没进行调优吧,例如:连接数大小设置、JVM参数设置、数据库参数优化等;

443f31034608984dd76e5babc34cb363.png然后我接着说道,项目是谁给你部署配置的呀,小梦说是小王部署的,然后今天小王也没来上班;我说道,小王没来上班呀,没事,让我来,我这bug绝缘体质,任何问题遇到我都会退避三舍的。

401691aeab92fb4a5613cb5e974db476.gif

上面的情景,我相信大家都可能会遇到过的;接下来我们就通过这次排查压测问题来聊聊一个 单体系统 的性能优化应该考虑哪些点,以及对这些点该怎么进行调优 。

本文主线如下图:

027bbf3f7f3b16e648df01ceaeece7c1.png

项目部署环境:在进行这次压测问题排查前,先通过下图了解下 接口项目的情况、项目部署的环境、JMeter测试脚本 的配置情况;

5b11da9ee2817f8503d60de3b0b04487.png上图中的接口项目、Redis、MySql 都是单机安装部署的 。

注意: 再进行下文之前,我们还需要记住一个前提:本项目中的接口代码是不存在问题的,并且数据库查询SQL都是最优的,都是走索引查询的,本次压力测试问题不是由于代码导致的,而是由于各种参数未调优造成的;代码调优和SQL调优在编码阶段就已经完成了。

简单性能调优的点:在上文中的项目部署情况和测试脚本的配置情况下进行压力测试时,就出现了小梦说的系统吞吐量上不去,以及应用服务器(部署接口项目的服务器)的 CPU 等资源使用率都很低的情况;

查看 JMeter 测试时系统的吞吐量如下图:

5bd8c9e08b9ee656c584aae376da7412.png

查看应用服务器(部署接口项目的服务器)的CPU使用率很低:

0c46024d462202ffcfac5d2d00e130e1.png

按照测试脚本的50个并发以及接口中含有计算密集型操作(加解密和验签)的情况,CPU是不应该这么低的;哎!什么鬼嘛?

c2abf4f2ab7765daaf0e8d0666c6ef1e.png别急,下面我们就展开具体的排查过程,并在排查过程中逐步了解各个调优的点;

排查过程就是按照文章开头中的 本文主线 图片中 简单性能调优的点 展开的 。

排查Tomcat连接器参数配置:

Tomcat 连接器参数配置只需要考虑以下几个方面:Connector使用哪种 protocol 协议HTTP/1.1:默认值,使用的协议与Tomcat版本有关

建议使用 NIO2:org.apache.coyote.http11.Http11Nio2Protocol

除了NIO2协议外,还有 BIO、NIO、APR 协议,可以自行去查阅资料;

acceptCount:等待队列的长度;当等待队列中连接的个数达到acceptCount时,说明队列已满,再进来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值