性能测试执行策略(六)
性能测试目的
-
测试系统最大处理能力
寻找系统最大的TPS,判断TPS和对应响应时间是否满足预期 -
测试系统支持最高并发
寻找系统最高能支持多少并发,当系统出现宕机、进程崩溃、报错率持续上升、响应时间超过可忍受范围、程序无响应等情况,即可认为系统达到了可支持的最高并发
性能测试场景
- 先进行单接口测试
- 再按照一定的并发比例,进行多接口混合测试
- 最后按照混合场景比例,进行长时间稳定性测试
注意: 同一个线程组内的接口,TPS都是一样的,故无强关联的接口分开不同的线程组
性能测试执行策略
-
加压策略
从小并发开始,逐步增加并发,寻找性能拐点 -
执行策略
试压阶段:寻找拐点,记录拐点数据
收集数据:选择拐点前后5组数据,按照固定时间(3-5分钟)重新跑一次,记录详细数据
性能拐点
并发数 | TPS | 平均响应时间(ms) |
---|---|---|
10 | 98 | 100 |
20 | 176 | 112 |
30 | 273 | 116 |
40 | 345 | 121 |
50 | 348 | 153 |
60 | 342 | 181 |
70 | 338 | 221 |
经过梯度压测,40并发时TPS达到拐点,所以40并发是本系统的最佳并发数
最终在测试报告中,记录下20、30、40、50、60五组数据即可
小Tips
在试压过程中,需要经常对并发数进行修改,如果压测机是Linux系统,其他机器修改再上传会比较麻烦,可以通过直接修改脚本的数据来实现修改
vi XX.jmx // 修改jmx脚本
...
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="插件" enabled="false">
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
<stringProp name="LoopController.loops">1</stringProp> // 循环次数
</elementProp>
<stringProp name="ThreadGroup.num_threads">1</stringProp> // 并发线程数
<stringProp name="ThreadGroup.ramp_time">1</stringProp> // ramp_time
<boolProp name="ThreadGroup.scheduler">false</boolProp> // 是否启用挑度器配置
<stringProp name="ThreadGroup.duration">60</stringProp> // 持续时间
<stringProp name="ThreadGroup.delay"></stringProp>
</ThreadGroup>
...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)