【JMeter】关于线程组的理解

是小鱼呀·2022-01-19 20:48·328 次阅读

【JMeter】关于线程组的理解

JMeter官方文档对线程组的解释:
线程组元件是任何一个测试计划的起点。所有的控制器和取样器必须在线程组下。其他元件,列如监听器,可以直接放在测试计划下,在这种情况下他们将应用于所有线程组。顾名思义,thread group元件控制JMeter用于执行测试的线程数。线程组管理允许你:

  1. 设置线程数
  2. 设置ramp-up period
  3. 设置执行测试的次数

每个线程将完整地执行测试计划,并且完全独立于其他测试线程。多个线程用于模拟与服务器应用程序的并发连接。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次,详见下图
在这里插入图片描述

posted @   是小鱼呀  阅读(328)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示