最近公司新起了一个项目,在进行功能测试结束后,要求做性能测试,以下是这次性能测试的实行记录:
方案
服务端采用的是负载均衡,使用了俩台服务器,一个是4核8G,一个是2核4G,200M带宽
公司要求计算的是单接口的tps峰值,性能的实施方案采用 俩个
一: 梯度加压的方案
采用jmeter中的梯度线程组进行增加,逐步增加线程组,形成大量的请求数来压单接口,最后得出tps的峰值
二:控制吞吐量
采用插件 吞吐量控制器来控制每秒请求数,也是逐渐的增加请求数量来加压接口。
中间遇到的问题和性能调优:
1.首先的jmeter本身的问题,在加压过程中,本机电脑的端口号会被压满,导致会报一个Address already in use的错误,这个可以通过增大本地的电脑端口号来解决。 参考链接: https://blog.csdn.net/MangoBling/article/details/126778495
2. 在加压登录注册接口时,tps一直处于90左右,加压到90后tps就上不去了,后面查询阿里云服务器上,发现有很多的慢查询,原来是在用户注册时,需要先查询这个用户是否注册,而用户量过多,查询很满,在加上索引后,tps最后达到了1700左右
3. 在进行调试发送验证码接口时,发现并发量大时接口一直报错…在排查后发现在发送验证码时,是对时间戳进行了判断,一个时间戳只能发送一个验证码,后期开发将发送验证码生成规则添加了雪花算法,进行了去重生成,之后就不报错了。
4. 在调试试卷详情接口时,发现生成的学生分数数据一直不正确,在和开发沟通后,发现是他们在进行生成试卷时没有加线程锁导致同一个用户生成的试卷有重复数据,最后生成分数时也填入了俩份试卷中导致的分数异常。
最后放一份此次压测的简单的测试报告:
链接:https://pan.baidu.com/s/1jsimPhvxAbKh0AfSUNH9yQ
提取码:c3fp