性能测试(记一次论坛网站性能测试)

近期做了一次论坛网站性能测试,记录下来以便总结提高,欢迎大家交流分享,若有不妥之处还请指教;

需求分析

性能要求

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过期了,导致后面的接口全部没有正常调用;

        检查断言,发现断言200是不行的,因为没有正常调用的接口也会返回200,改了断言之后,重新压测,tps不会再陡增。

你可能感兴趣的:(#,性能测试,压力测试)