JMeter并发线程组 Concurrency Thread Group 阶梯式加压
目录
概念
所谓梯度是指开始使用较少的用户加压一段时间(几分钟即可),待TPS稳定后再继续往上加用户,如此循环,直到TPS不再增加为止。整个过程就像爬楼梯一样,所以称为“梯度”。
使用场景
这种类型场景一般是为了“偷懒”而设计的。比如,在生产环境要测试一个交易的最大TPS能够到多少时,我们为了节省宝贵的测试时间,一般会使用梯度加压的场景策略。这时我们不知道被测环境能够达到什么样的吞吐量,也没有明确的测试指标,为了快速找到应用的最大TPS,使用梯度场景是最简单有效的。另外,梯度场景适合独立交易的应用(压测场景只有一个交易),因为独立交易不必考虑复杂的场景设置,使用梯度场景可以节省大量的测试执行时间。
开始看一些博客使用的是Stepping Thread Group来加压,后面下载没有看到,从一个大牛博客才知道
由于Stepping Thread Group步进线程组已经不被官方推荐了,
所以现在我们使用Concurrency Thread Group并发线程组;
- 并发线程组允许控制测试的长度,
- 并且线程在进程中间结束的情况下创建替换线程,
- 并发线程组不会创建所有线程,从而节省内存,
- 并发线程组不提供初始延时和减速的功能;
安装Concurrency Thread Group插件
下载Concurrency Thread Group并发线程组插件,选择或者搜索Custom Thread Groups:
下载完成之后,JMeter会自动重启。
在测试计划里面添加并发线程组
参数 | 说明 |
---|---|
Target Concurrency | 目标并发(线程数) |
Ramp Up Time | 加速时间 |
Ramp-Up Steps Count | 加速步骤计数 |
Hold Target Rate Time | 保持目标速率时间 |
Time Unit | 时间单位(分钟或者秒 |
Thread Iterations Limit | 线程迭代次数限制(循环次数) |
Log Threads Status into File | 将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件) |
场景
以打开优快云首页https://www.youkuaiyun.com/为例
100个线程
半分钟的加速时间
5个加速步骤
持有目标速率半分钟;
解析
每步0.1分钟(0.5分钟除以5步)。也就是6秒一步
每步20个用户(100个用户除以5步)
每0.1分钟将添加20个用户去访问,直到达到100个用户
达到100个线程后,所有这些线程将继续运行,并一起打到服务器半分钟;
聚合报告:
第一次执行
第二次执行