JMeter定时器之同步定时器

JMeter定时器之同步定时器

1. 背景

在实际生活中大家肯定遇到过一种场景,就是在某一时间或某一时刻,某件商品进行抢购,相当于秒杀;但是用JMeter进行测试的时候,如何模拟这种场景?用一种组件就可以实现,定时器中的"同步定时器"。

2. 目的

  • 了解t同步定时器的基础功能;熟悉同步定时器的使用场景。
  • 学会使用同步定时器组件。

3. 介绍

官网解释: 同步定时器的目的是阻塞下称,直到X个线程被阻塞,然后立即释放。因此,同步定时器可以在各种情况下创建较大的瞬时负载。

界面显示: 如下所示。

属性 描述 必填
名称 树中显示此计时器的描述性名称
要分组的并发用户数 一次释放的线程数,设置为0等效于将其设置为线程中的线程数 是的
超时时间(单位是毫秒) 1、如果设置成0,计时器将等待线程数达到"要分组的并发用户"中的值。 2、如果大于0,则计数器将以最大"超时时间(单位是毫秒)"等待线程。 3、如果在超时时间间隔后未达到等待的用户数,计时器将停止等待。 4、默认值为0。
[#### 参数解释]

注意:

  • 如果超时时间设置为0,并且线程数永远不会达到"要分组的并发数",则Test将无限停止,只有强制停止才能阻止他。这种情况,将超时时间设置成一个合理的值是需要考虑的。
  • 仅在一个JVM内同步定时器模块,因为如果使用分布式测试,请确保永远不会将"并发用户数"设置高于用户数的值,其包含的线程组只考虑一个注入器。

4. 例子

验证同步定时器,作用,准备如下测试场景

4.1单个请求

|----|---------|---------|------|-----------------------------------------------------------------------------------------------------------|
| 序号 | 线程数(30) | 定时器等待线程 | 超时时间 | 预期结果 |
| 1 | 30 | 30 | 0 | 用户等待达到30个用户,同时并发发起请求 |
| 2 | 30 | 20 | 100 | 1、刚好超时100ms,且用户等待达到20个用户,同时并发发起请求。 2、等到20个用户,未超时,继续等到结束,再并发,这时用户数将大于30。 3、等到小于20个用户,又超过超时时间,等到的用户数可以小于30。 |
| 3 | 30 | 40 | 0 | 用户无法达到40个用户,线程会一直等待,不会停止。 |
| 4 | 30 | 0 | 0 | 定时器设置的用户等于线程组的用户,超时默认设置为0,用户同时并发。 |
[##### 测试场景]

  • 序号是1,设置如上边参数,测试结果如下所示。
  • 序号是4,设置如上边参数,测试结果如下所示。

4.2多个请求

背景: 当线程组中有多个请求,怎么实现不同请求的不同并发操作呢?

解决方案: 例如单个线程组下有两个请求,给每个请求增加同步定时器,每个定时器设置不同的并发数。

重点:线程数的参数 > 定时器的等待线程数。

|----|--------|----------|----------|------|-----------------------------------------------------------------|
| 序号 | 线程数(8) | 定时器等待线程1 | 定时器等待线程2 | 超时时间 | 预期结果 |
| 1 | 8 | 2 | 4 | 0 | 1、定时器等待线程1,总请求次数,8次,每次2个同时并发请求。 2、定时器等待线程2,总请求次数,8次,每次4个同时并发请求。 |
[##### 测试场景]

测试结果:

相关推荐
文人sec3 天前
性能测试-jmeter9-逻辑控制器、定时器压力并发
测试工具·jmeter·性能优化·模块测试
CesareCheung5 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流5 天前
jmeter使用技巧
jmeter
春时似衿里5 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书5 天前
JMeter的安装部署
jmeter
程序员杰哥5 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎5 天前
Jmeter测试
jmeter
卓码软件测评5 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
BatyTao6 天前
Jmeter执行数据库操作
数据库·jmeter
二宝哥6 天前
性能测试工具Jmeter之java.net.BindException: Address already in use
jmeter