【JMeter】关于线程组的理解
JMeter官方文档对线程组的解释:
线程组元件是任何一个测试计划的起点。所有的控制器和取样器必须在线程组下。其他元件,列如监听器,可以直接放在测试计划下,在这种情况下他们将应用于所有线程组。顾名思义,thread group元件控制JMeter用于执行测试的线程数。线程组管理允许你:
- 设置线程数
- 设置ramp-up period
- 设置执行测试的次数
每个线程将完整地执行测试计划,并且完全独立于其他测试线程。多个线程用于模拟与服务器应用程序的并发连接。Ramp-up period告诉JMeter多久开始"ramp-up"选择的全部线程。如果使用10个线程,ramp-up period是100秒,那么JMeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。如果有30 个线程和一个120秒的ramp-up period,那么每个连续的线程会延迟4秒。
Ramp-up需要足够长的时间来避免测试开始时的工作量过大,并且足够短,以便最后一个线程在第一个线程完成之前开始运行(除非有人希望这样做)。
使用ramp-up=线程数启动,并上下调整到所需的。
By default, the thread group is configured to loop once through its elements.
默认情况下,线程组配置为在其元素之间循环一次。
自己的理解
1.假设线程数5,Ramp-up period 5 ,执行一次,意思是一共5个线程,第一个线程开启后间隔1S开启下一个线程,执行一次。等于并发数为1.
2.假设线程数5,Ramp-up period 5,执行3次,意思是一共5个线程,每个线程执行3次,第一个线程开启后会继续执行下一次,第一个和第二个线程间隔1秒。此时的并发数可能不为1,要看具体的接口响应时间。
3.假设线程数5,Ramp-up period 5,永久执行,意思是一共5个线程,每个线程开启时间间隔1s,5秒后这5个线程继续执行,此时并发数可能为5
详细区别可见下图
线程数5,Ramp-up period 5 ,执行一次
线程数5,Ramp-up period 5,执行3次
Ramp-up period设置时间太短在刚启动时工作负载会太大,时间太长可能一个线程已经完成但是最后一个还没开启,导致并发量不够.
但是如果执行次数足够多,或者运行时间足够长,可以达到并发数=线程数,但是仅为一段时间内可达到。
假设线程数50,如果Ramp-up period 为1 和 Ramp-up period 为50,在执行一次的情况下,压力完全不一样,前者的并发是50 ,后者可能为1.但是在运行时间足够长时,50秒以后,后者的并发也能达到50
详见下图,仅为理论上的示意图
线程数50,Ramp-up period 为1 ,执行永久
线程数50,Ramp-up period 为50 ,执行永久
线程数 ,ramp-up period,执行测试的次数决定并发量,不同的测试场景下参数配置也不同。如果想要保证线程到达一定数量再执行,可增加同步定时器(Synchronizing Timer)
假设线程数5,ramp-up period 5,执行次数3 ,同步定时器 模拟用户组数量5。原本一秒开启一个线程,现在等待5秒,开启5个线程,再间隔一定时间开启5个线程,一共执行3次,详见下图
作者: 是小鱼呀
出处:https://www.cnblogs.com/sophia12138/p/15824059.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!