JMeter 集合点设置之Synchronizing Timer的使用

本文详细介绍了JMeter中的同步定时器配置与使用方法,包括关键参数解释、注意事项及应用场景。通过实例演示了如何实现线程同步,确保负载测试中的线程按预期批次释放。

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

1、布局设置

JMeter <wbr>集合点设置之Synchronizing <wbr>Timer的使用

注:

1) 说明:

名称:自定义名称

 

Number of Simulated Users to Group by:每次释放的线程数量。如果设置为0,等同于设置为线程租中的线程数量。

 

Timeout in milliseconds:

如果设置为0Timer将会等待线程数达到了"Number of Simultaneous Users to Group"中设置的值才释放。如果大于0,那么如果超过Timeout in milliseconds中设置的最大等待时间(毫秒为单位)后还没达到"Number of Simultaneous Users to Group"中设置的值,Timer将不再等待,释放已到达的线程。默认为0

 

注意:

如果设置Timeout in milliseconds0,且线程数量无法达到"Number of Simultaneous Users to Group by"中设置的值,那么Test将无限等待,除非手动终止。

 

Synchronizing timer 仅作用于同一个JVM中的线程,所以,如果使用并发测试,确保"Number of Simultaneous Users to Group by"中设置的值不大于它所在线程组包含的用户数。

 

(原文:Synchronizing timer blocks only within one JVM, so if using Distributed testing ensure you never set "Number of Simultaneous Users to Group by" to a value superior to the number of users of its containing Thread group considering 1 injector only

 

2) Synchronizing Timer是在每个sampler(采样器)之前执行的,而不是之后,不管这个定时器的位置放在sampler之后,还是之前,如下,执行HTTP请求1和HTTP请求2前都会执行同步定时器

 

 JMeter <wbr>集合点设置之Synchronizing <wbr>Timer的使用

3)作用域:当执行一个sample之前时,和sampler处于相同作用域的定时器都会被执行;

4)如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入,如下图

定时器仅仅对HTTP请求2起作用,即仅在HTTP请求2执行前执行定时器,和HTTP请求1无关

 

JMeter <wbr>集合点设置之Synchronizing <wbr>Timer的使用

 

 

2、如上,添加相关请求,结果树等,进行必要设置后,运行查看效果

通过结果树可以看到,请求是批量执行的

### JMeter设置集合点Synchronizing Timer)的使用方法 在 JMeter 中,可以通过 **Synchronizing Timer** 来实现类似于 LoadRunner 的集合点功能。该工具用于模拟多个线程在同一时刻发起请求的操作,从而验证系统的高并发处理能力。 #### 配置 Synchronizing Timer 实现线程同步 1. 在测试计划中找到需要添加集合点的目标采样器或控制器。 2. 右键点击目标位置 -> 添加 -> 定时器 -> Synchronizing Timer[^1]。 3. 配置 `Number of Simultaneous Users to Group by` 参数:此参数定义了需要聚集在一起并同时触发请求的线程数量。例如,如果将其设置为 5,则当有 5 个线程到达此处时,它们会一起发送请求[^3]。 4. (可选)配置 `Timeout in milliseconds` 参数:此参数指定了线程等待其他线程加入的最大时间。如果在此时间内未能达到指定的线程数,则已有的线程将继续执行后续操作而不会继续等待。注意,若将超时时间设为 0 并且未满足所需的线程数,测试可能会陷入无限等待状态[^2]。 #### 示例场景说明 假设我们需要模拟 10 个用户访问某个接口,并希望这些用户能够完全同时提交请求: - 创建一个线程组并将线程数设置为 10; - 在目标 HTTP 请求下添加 Synchronizing Timer; - 将 `Number of Simultaneous Users to Group by` 设定为 10; - 考虑到实际运行环境可能存在的延迟,在必要情况下设定合理的超时时间 (如 10 秒)[^4]。 以下是具体代码片段展示如何通过脚本形式控制这一过程的一部分逻辑: ```java // 假设这是 Java API 下调用 JMeter 测试元件的方式之一 StandardJMeterEngine jmeter = new StandardJMeterEngine(); HashTree testPlanTree = new HashTree(); ThreadGroup threadGroup = new ThreadGroup(); threadGroup.setNumThreads(10); // 设置线程数目为10 Timer syncTimer = new SyncTimer(); syncTimer.setProperty(TestElement.TEST_CLASS, "kg.apc.jmeter.timers.VariableThroughputTimer"); ((SyncTimer) syncTimer).setNumberOfSimUsersToGroupBy(10); testPlanTree.add(threadGroup); ``` #### 注意事项 - 确保所使用的 JVM 和硬件资源足以支持预期的大规模并发测试需求。 - 若跨多台机器分布式部署 JMeter,则需额外考虑网络延迟等因素的影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值