近期做了一次论坛网站性能测试,记录下来以便总结提高,欢迎大家交流分享,若有不妥之处还请指教;
需求分析
性能要求
1、服务在3000并发基础上,关键服务响应时间小于等于300ms
2、系统支持快速扩容,支持更大的并发Session,例如并发Session从2000到4000,扩容后关键页面访问、关键服务响应时间增长幅度低于5%
性能指标
经过分析,我们认为要求中的3000绝对并发,跟jmeter中的并发数不同,要求中应该是指的3000用户同时操作,对应到我们jmeter压测过程中,说的是tps 达到3000;
用户要求并发 | 用户要求响应时间 | 预估线程数 (jmeter并发数) |
3000并发--每秒3000请求 | 300ms--1秒请求3次 | 1000 |
所以测试时应关注的指标为:TPS 3000时,服务响应时间 小于等于300ms
环境准备
略
测试工具
apache-jmeter-5.1.1
测试过程
单接口
1、首先利用阶梯压测,找到并发数和TPS的拐点;初步得到我们压测时,应该给多少并发数;
阶梯压测后,我们决定并发数最大为 500
2、单接口场景下,分别给单接口100、200、250 、500并发数;
如下所示,200加到250 直到500,tps并没有跟着上涨,但是响应时间却上涨很快;
所以得到最优情况为:并发数 200,tps 1023.5
并发数 | TPS | 平均响应时间 | 90%响应时间 | 95%响应时间 | 异常率(%) | 执行时长(s) | CPU | 内存 |
---|---|---|---|---|---|---|---|---|
100 | 893.6/s | 111 | 146 | 162 | 0 | 300 | 85.26% | 69.28% |
31.00% | 79.79% | |||||||
200 | 1023.5/s | 146 | 288 | 378 | 0 | 300 | 95.10% | 70.01% |
35.97% | 79.31% | |||||||
250 | 1043.1/s | 238 | 367 | 712 | 0 | 300 | 95.49% | 68.88% |
37.04% | 79.35% | |||||||
500 | 1062.2/s | 462 | 1225 | 1474 | 0 | 300 | 96.06% | 68.81% |
39.21% | 79.45% |
3、此时观察cpu和内存,cpu达到了90%以上,所以我们决定扩容后再次测试;
4、对性能环境扩容4倍后,我们再次用阶梯压测,得到最大并发数还是给到500;
5、把所有的接口,分别给100、200、500并发,根据结果来分析最优情况;
最优情况:并发数 500,TPS 2313.8
并计算出扩容4倍后,提升率为126%,继续扩容应该可以满足性能要求
并发数 | TPS | 平均响应时间 | 90%响应时间 | 95%响应时间 | 异常率(%) | 执行时长(s) | CPU | 内存 |
---|---|---|---|---|---|---|---|---|
100 | 1124.9 | 87 | 101 | 127 | 0 | 300 | 26.11% | 34.70% |
34.65% | 75.74% | |||||||
22.43% | 47.03% | |||||||
39.48% | 91.49% | |||||||
200 | 1729.2 | 114 | 133 | 148 | 0 | 300 | 38.93% | 34.75% |
53.57% | 76.23% | |||||||
30.17% | 47.26% | |||||||
59.09% | 88.36% | |||||||
500 | 2313.8 | 213 | 239 | 1123 | 0 | 300 | 49.08% | 35.23% |
67.36% | 76.51% | |||||||
42.09% | 47.43% | |||||||
75.74% | 89.16% |
混合接口
跟单接口测试方法一样
扩容前得到最优情况为:并发数 200, tps 170
扩容后得到最优情况为:并发数 500, tps 437.2
性能问题及优化
1、执行十几秒后,TPS断崖式下降,响应时间增大,CPU使用率下降 ----因为数据库只有只读模式导致报错,数据都堵塞在master;
2、nmc监控,发现存在慢sql,----对相关慢sql进行整改;
踩坑过程
在持续压测15分钟后,tps会迅速上升,错误率随之迅速上升,刚开始以为是运行一段时间之后,都走缓存,所以tps会有明显的上升趋势,后来排查发现,15分钟后,获取的token过期了,导致后面的接口全部没有正常调用;文章来源:https://www.toymoban.com/news/detail-508934.html
检查断言,发现断言200是不行的,因为没有正常调用的接口也会返回200,改了断言之后,重新压测,tps不会再陡增。文章来源地址https://www.toymoban.com/news/detail-508934.html
到了这里,关于性能测试(记一次论坛网站性能测试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!