jmeter_同步定时器多情况解析

本文通过四个不同场景详细解析了JMeter的同步定时器使用情况,包括触发线程数集合和时间集合的不同设置,分析了线程启动、释放及间隔时间的计算逻辑,并举例说明了线程组循环对同步定时器的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有什么问题,欢迎指正或探索讨论

一、不设置循环次数,同步定时器触发时间集合的情况

1、 配置线程组数据

  • 设置线程数为10个
  • Ramp-up时间设置为50秒
  • 循环次数设置为1次
    在这里插入图片描述

2、设置同步定时器

  • 同步定时器设置模拟用户组的数量为5个
  • 超时时间以毫秒为单位设置为10000毫秒,也就是10秒钟
    在这里插入图片描述

3、查看运行结果(第一条样本可以忽略,用于获取token的)

首先我们看同步定时器的设置,设置的是达到5个线程就进行一次释放或者10秒钟就进行一次释放。两条件触发了任一种都会进行释放

再看下Ramp-up Period(in seconds)的设置,线程与线程之间的时间间隔是5秒钟(详细的解释可以看→Ramp-up的用法

  • 查看前三条线程,也就是第2条至第4条样本,启动时间是相同的17:17:59.796

  • 为什么3条线程就释放了呢,不是5条吗?

因为第1条线程至第3条线程启动的时间,2*5=10秒钟,触发了同步定时器设置的10秒钟释放一次,所以3条线程就释放了

  • 为什么3条线程的启动时间一样呢?

因为同步定时器是将线程集合起来,再一起释放,所以3条线程的启动时间是一样的
在这里插入图片描述

  • 查看第3条线程和第4条线程,也就是第4条样本和第5条样本,之间的间隔时间为15秒钟

因为3个线程释放一次,每个线程之前会等待Ramp-up Period设置的5秒,所以是5*3=15秒

  • 查看最后两条线程,也就是第10条样本和第11条样本,之间的间隔时间为15秒钟

因为线程之间的间隔为5秒,同步定时器设置的触发时间为10秒。最后只有一条线程了,达不到5个线程的条件只能等待触发时间为10秒,所以是10+5=15秒

在这里插入图片描述

二、不设置循环次数,同步定时器触发线程数集合的情况

1、 配置线程组数据

  • 设置线程数为10个
  • Ramp-up时间设置为50秒
  • 循环次数设置为1次
    在这里插入图片描述

2、设置同步定时器

  • 同步定时器设置模拟用户组的数量为3个
  • 超时时间以毫秒为单位设置为60000毫秒,也就是60秒钟
    在这里插入图片描述

3、查看运行结果(第一条样本可以忽略,用于获取token的)

首先我们看同步定时器的设置,设置的是达到3个线程就进行一次释放或者60秒钟就进行一次释放。两条件触发了任一种都会进行释放

再看下Ramp-up Period(in seconds)的设置,线程与线程之间的时间间隔是5秒钟(详细的解释可以看→Ramp-up的用法

  • 查看前三条线程,也就是第2条至第4条样本,启动时间是相同的14:30:55.187

因为设置的触发同步定时器时间为60秒钟释放一次,3条线程的时间是10秒钟,所以先触发3条线程的条件进行释放
在这里插入图片描述

  • 查看第3条线程和第4条线程,也就是第4条样本和第5条样本,之间的间隔时间为15秒钟

因为3个线程释放一次,每个线程之前会等待Ramp-up Period设置的5秒,所以是5*3=15秒

  • 查看最后两条线程,也就是第10条样本和第11条样本,之间的间隔时间为65秒钟

因为线程之间的间隔为5秒,同步定时器设置的触发时间为60秒。最后只有一条线程了,达不到3个线程的条件只能等待触发时间为60秒,所以是60+5=65秒
在这里插入图片描述
三、设置循环次数,同步定时器触发线程数集合的情况

1、 配置线程组数据

  • 设置线程数为10个
  • Ramp-up时间设置为50秒
  • 循环次数设置为10次
    在这里插入图片描述

2、设置同步定时器

  • 同步定时器设置模拟用户组的数量为3个
  • 超时时间以毫秒为单位设置为60000毫秒,也就是60秒钟
    在这里插入图片描述

3、查看运行结果(第一条样本可以忽略,用于获取token的)

首先我们看同步定时器的设置,设置的是达到3个线程就进行一次释放或者60秒钟就进行一次释放。两条件触发了任一种都会进行释放

再看下Ramp-up Period(in seconds)的设置,线程与线程之间的时间间隔是5秒钟(详细的解释可以看→Ramp-up的用法

  • 查看前三条线程,也就是第2条至第4条样本,启动时间是相同的10:10:36.959

设置的触发同步定时器时间为60秒钟释放一次,3条线程的时间是10秒钟,所以先触发3条线程的条件进行释放
循环次数为10次,已经启动的线程会连续循环10次,且3个线程同步执行。查看结果图就可以看到非常有规律的3条线程一块执行,且循环了10次
因为下个释放点是15秒钟后,所以循环10次时没有之后的线程打乱规则。如果循环时有其他线程启动,则3条线程释放时就不是固定123这3条了

  • 为什么3条之间的间隔时间这么短呢?

因为同步定时器设置3条就释放一次,并没有触发到时间
在这里插入图片描述

  • 查看第1条线程和第4条线程的第一次启动时间,也就是第2条样本和第32条样本,之间的间隔时间为15秒钟

因为3个线程释放一次,每个线程之前会等待Ramp-up Period设置的5秒,所以是5*3=15秒
在这里插入图片描述

  • 查看第7条线程和第10条线程的第一次启动时间,也就是第62条样本和第92条样本,之间的间隔时间为65秒钟(789是一组,看7和9是一样的)

因为线程之间的间隔为5秒,同步定时器设置的触发时间为60秒。最后只有一条线程了,达不到3个线程的条件只能等待触发时间为60秒,所以是60+5=65秒
在这里插入图片描述

  • 查看第10条线程的每次启动时间,之间的间隔时间为60秒钟

线程已经启动,不需要再等待5秒。同步定时器设置的触发时间为60秒,最后只有一条线程了,达不到3个线程的条件只能等待触发时间为60秒
在这里插入图片描述
四、设置循环次数,同步定时器触发时间集合的情况

1、 配置线程组数据

  • 设置线程数为10个
  • Ramp-up时间设置为50秒
  • 循环次数设置为2次
    在这里插入图片描述

2、设置同步定时器

  • 同步定时器设置模拟用户组的数量为10个
  • 超时时间以毫秒为单位设置为10000毫秒,也就是10秒钟
    在这里插入图片描述

3、查看运行结果(第一条样本可以忽略,用于获取token的)

首先我们看同步定时器的设置,设置的是达到10个线程就进行一次释放或者10秒钟就进行一次释放。两条件触发了任一种都会进行释放

再看下Ramp-up Period(in seconds)的设置,线程与线程之间的时间间隔是5秒钟(详细的解释可以看→Ramp-up的用法

  • 查看第一次释放的线程,也就是第2条至第4条样本,启动时间是相同的15:07:17.138

设置的触发同步定时器时间为10秒钟释放一次,10条线程的时间是50秒钟,所以先触发10秒钟的条件进行释放,去掉第一条线程的5秒钟准备时间,3条线程启动刚好是10秒钟
在这里插入图片描述

  • 查看第二次释放的线程,也就是第5条至第9条样本,启动时间是相同的15:07:27.260

设置的触发同步定时器时间为10秒钟释放一次,45两条线程启动时间为10秒,加上上次释放过的123线程循环1次,这次的释放一共是5条线程
在这里插入图片描述

  • 查看倒数第二次释放,也就是第18条至第20条样本,启动时间是相同的15:07:57.631

设置的触发同步定时器时间为10秒钟释放一次,最后只有一条线程,凑不齐10条,启动时间为10秒,加上上次释放过的89线程循环1次,这次的释放一共是3条线程
在这里插入图片描述

  • 查看最后一次释放,也就是第21条样本,启动时间是15:08:07.775

设置的触发同步定时器时间为10秒钟释放一次,最后只有一条线程循环,凑不齐10条,启动时间为10秒,没有之前释放过要循环的线程了,这次的释放一共是1条线程

  • 为什么最后一条循环的线程还要等10秒钟呢?

因为同步定时器设置的是10秒钟释放一次,所以不论之前线程是否已经启动都得等待10秒钟才会释放
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值