【场景】JMeter并发线程组 Concurrency Thread Group 阶梯式加压

JMeter并发线程组 Concurrency Thread Group 阶梯式加压

          目录

概念

使用场景

安装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个线程后,所有这些线程将继续运行,并一起打到服务器半分钟

聚合报告:

第一次执行

第二次执行

### 设置和使用JMeter中的并发线程组 #### 配置线程组参数 在JMeter中,线程组是任何试计划的基础组件。为了执行单场景并发试,在线程组内需设定特定数量的线程数以模拟预期的用户负载[^1]。 对于更精确地控制并发行为,可以采用`Custom Thread Groups`插件来增强标准线程组的功能[^3]。此插件允许创建更加复杂的加载模式,从而更好地模仿真实世界的流量情况。 #### 创建基本线程组 要启动一个新的线程组配置: 1. 打开JMeter并新建一个试计划; 2. 右键点击试计划节点 -> 添加 -> 线程(用户) -> 线程组; 3. 在打开的对话框里调整如下字段: - **名称**: 给定易于识别的名字给这个线程组。 - **线程数 (Users)**: 定义参与此次试的虚拟用户的总数目。 - **Ramp-Up Period(in seconds)**: 设定所有线程完全启动所需的时间间隔;如果设为0,则意味着所有线程会立即同时开始运行。 - **Loop Count**: 控制每个线程重复执行采样器操作次数;选中“永远”,则直到手动停止前持续循环。 ```xml <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"> <stringProp name="TestPlan.comments">Basic Concurrent Users Simulation</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="HashTree"/> <boolProp name="ThreadGroup.scheduler">false</boolProp> <longProp name="ThreadGroup.start_time">1678954321000</longProp> <longProp name="ThreadGroup.end_time">1678954321000</longProp> <intProp name="ThreadGroup.num_threads">10</intProp> <!-- Number of concurrent users --> <intProp name="ThreadGroup.ramp_time">1</intProp> <!-- Ramp-up period in seconds --> <intProp name="LoopController.loops">-1</intProp> <!-- Loop count, set to infinite --> <boolProp name="LoopController.continue_forever">true</boolProp> </ThreadGroup> ``` #### 使用自定义线程组实现高级功能 当需要复杂度更高的并发模型时,安装并启用`Custom Thread Group`插件能够提供额外选项,比如阶梯形增加/减少用户、保持固定速率发送请求等特性[^4]。这些特性的应用使得构建贴近实际业务环境下的试成为可能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值