Jmeter(108)——Concurrency Thread Group

本文详细介绍了如何在测试用例中配置线程组,设置目标并发数、加压时间和步数,以及如何配合监听器和取样器进行性能测试,重点讲解了阶梯加压的实现方式和示例应用。

下载插件:

这个线程组主要就是用来设置并发量,来看下它的参数

 Target concurrency:目标并发数,这里设置10

Ramp Up Time:加压时间,这里设置1分钟

Ramp-Up Step Counts:加压阶梯数,这里设置5

Hold Target Rate Time:保持时间,这里设置1分钟

设置完毕以上参数,意思就是期望达到10个并发,这10个并发不是瞬间增长的,需要在1分钟内达到,并且分5次加压,即每60/5=12秒加压一次,每次增加并发数10/5=2个,达到10个并发后,运行1分钟

Thread Iterations limit:线程循环次数,默认空为无限循环,最后根据保持时间停止线程

Log Thread Status into File:将线程启动和停止的日志保存在文件中

 示例:

在这个线程组下增加一个beanshell sampler取样器

 增加两个监听器,Aggregate Report和Active Threads Over Time

按照设置的运行

 这个线程组只有在启动时会设置阶梯加压,最后释放时会全部瞬时释放

JMeter 中的 Concurrency Thread Group 是一个高级线程组组件,用于模拟并发用户行为。与传统的线程组不同,Concurrency Thread Group 提供了更直观的方式来控制并发用户的数量,并动态调整线程数以达到目标吞吐量。 ### 基本用法 Concurrency Thread Group 的核心配置参数包括: - **Target Concurrency**:定义最大并发用户数。 - **Initial Threads Count**:初始启动的线程(用户)数量。 - **Hold Target Rate Time (seconds)**:维持目标并发数的时间。 - **Thread Iterations Limit**:每个线程执行的迭代次数上限。 - **Rate Control**: 通过指定每秒事务数来控制负载。 - **Threads Distribution**: 可视化地定义线程增长和下降阶段。 该组件支持基于持续时间的负载模式,以及基于迭代次数的测试场景[^1]。 ### 配置指南 1. **设定目标并发数** 根据预期的系统负载设定合理的 `Target Concurrency` 值,这通常基于性能需求或历史访问数据。 2. **设置初始线程数** 初始值应低于目标并发数,以便逐步增加负载,观察系统响应变化。 3. **定义保持时间** 设置 `Hold Target Rate Time` 来确保系统在峰值负载下稳定运行一段时间,有助于识别潜在瓶颈。 4. **使用阶梯式增长策略** 在 `Threads Distribution` 中配置线性或指数增长模式,使测试过程更具现实意义。 5. **结合定时器和断言** 添加合适的定时器(如 Constant Throughput Timer)以控制请求频率;使用响应断言验证返回结果是否符合预期。 6. **监控资源消耗** 在测试过程中启用监听器(如 View Results Tree 或 Summary Report),实时查看性能指标并分析日志输出。 ### 最佳实践 - **避免过度加载测试环境** 不建议直接使用超出服务器处理能力的目标并发数进行测试,否则可能导致服务崩溃或无法获取有效数据。 - **使用分布式测试架构** 如果单台机器难以生成足够的负载,可以考虑搭建 JMeter 分布式集群以提高测试规模。 - **合理设置超时时间** 网络请求可能因多种原因延迟,为采样器设置合理的连接和响应超时时间有助于准确评估系统表现。 - **记录并分析测试结果** 使用 JMeter 插件(如 PerfMon Metrics Collector)收集 CPU、内存等系统级指标,辅助性能调优决策。 - **定期清理缓存与重置状态** 对于需要登录或维护会话状态的测试场景,在每次迭代前清除 Cookie 或重新认证可防止缓存影响测试准确性。 - **采用模块化设计** 将常用逻辑封装成独立的测试片段(Test Fragment),便于复用和维护复杂的测试计划。 ```java // 示例代码:展示如何通过 JSR223 Sampler 使用 Groovy 脚本动态修改 Concurrency Thread Group 参数 import org.apache.jmeter.threads.concurrency.ConcurrencyControl; def concurrencyGroup = ctx.getEngine().getCurrentThreadGroup() as ConcurrencyControl; concurrencyGroup.setTargetConcurrentUsers(100); log.info("Updated target concurrency to 100 users"); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

agrapea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值