Jmeter常用定时器介绍

本文详细介绍了如何在Apache JMeter中使用各种定时器组件,如ConstantTimer、UniformRandomTimer、ConstantThroughputTimer等,以模拟真实场景中的延迟需求。涵盖了固定延时、随机延时和吞吐量控制,以及高级定时器如JSR223和PoissonRandomTimer。

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

背景

         jmeter并发测试每个请求之间是没有延时的,但实际工作有时候需要增加固定时间来测试,那么可以Jmeter定器组件,完成工作。其实这些知识百度一查就出来,为什么还要写,主要方便自己复习,要找的时候就从自己文章中找出,而且这些自己通过自己调试后,直接可以拿出来用。

定时器

  • Constant Timer 固定定时器
  • Uniform Random Timer 均匀随机定时器
  • Constant Throughput Timer 固定吞吐量定时器
  • Gaussian Random Timer 高斯随机定时器
  • JSR223 Timer JSR223定时器
  • Poisson Random Timer 泊松随机定时器
  • Synchronizing Timer 同步定时器
  • BeanShell Timer BeanShell脚本编写定时器
  • Precise Throughput Timer 精准吞吐量定时器

截图:

6b2638af3cc83f07f7759ae340abad43.png

1、Constant Timer 固定定时器

1c238b81ef04ea3e719421e4250a5372.png

     作用:通过ThreadDelay设定每个线程请求之前的等待时间(单位为毫秒)。

2、Uniform Random Timer 均匀随机定时器

e3f0febd1fb4a72c3f4ff9f4c0bfd588.png

作用:它产生的延迟时间是个随机值,而各随机值出现的概率均等。总的延迟时间等于一个随机延迟时间加上一个固定延迟时间,用户可以设置随机延迟时间和固定延迟时间。总延迟时间=指定范围内的随机时间+固定延迟时间

3、Constant Throughput Timer 固定吞吐量定时器

62a2e5f4ad89e7ea8a64c9edee876a68.png

作用:  按指定的吞吐量执行,以每分钟为单位。计算吞吐量依据是最后一次线程的执行时延。Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,可以选择作用的线程:当前线程、当前线程组、所有线程组等,具体含义如下:

  • this thread only: 设置每个线程的吞吐量。总的吞吐量=线程数*该值。
  • all active threads in current thread group:吞吐量被分摊到当前线程组所有的活动线程上。每个线程将根据上次运行时间延迟。
  • all active threads:吞吐量被分配到所有线程组的所有活动线程的总吞吐量。每个线程将根据上次运行时间延迟。在这种情况下,每个线程组需要一个具有相同设置的固定吞吐量定时器。(不常用)
  • all active threads in current thread group (shared):同上,但是每个线程是根据组中的线程的上一次运行时间来延迟。相当于线程组组内排队。(不常用)
  • all active threads (shared):同上,但每个线程是根据线程的上次运行时间来延迟。相当于让所有线程组整体排队。(不常用)

4、Gaussian Random Timer 高斯随机定时器

feaf5b22e04c63c5a125b302e6af3f69.png

作用:每个线程的延迟时间是符合标准正态分布的随机时间停顿,那么使用这个定时器,总延迟 = 高斯分布值(平均0.0和标准偏差1.0)* 指定的偏差值+固定延迟偏移(Math.abs((this.random.nextGaussian() * 偏差值) + 固定延迟偏移))

5、JSR223 Timer JSR223定时器

b946d36493a2dcce5dba8808ca038136.png

JSR223计时器可以使用JSR223脚本语言生成延迟;

参考帮助文档:

https://jmeter.apache.org/usermanual/component_reference.html#JSR223_Timer

6、Poisson Random Timer 泊松随机定时器

70be64b5ee4fc616c2fcf4a6d5ddbed8.png

这个定时器在每个线程请求之前按随机的时间停顿,总的延迟就是泊松分布值和偏移值之和。上面表示暂停时间会分布在100到400毫秒之间:(1)Lambda(in milliseconds):兰布达值(2)Constant Delay Offset(in milliseconds):暂停的毫秒数减去随机延迟的毫秒数

7、Synchronizing Timer 同步定时器

18ef91e6dae4ee1ea54e951ce5ff3ee3.png

作用:用来设置集合点,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力(1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量,若设置为0,等于设置为线程组中的线程数量;(2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数;如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直死等。如果大于0,那么如果超过Timeout inmilliseconds中设置的最大等待时间后还没达到设置的线程数,Timer将不再等待,释放已到达的线程。默认为0同步定时器(Synchronizing Timer)的超时时间设置要求:超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

8、BeanShell Timer BeanShell脚本编写定时器

f79cf362025fe30122318f58c431761f.png

参数说明:

  • Reset Interpreter:每次迭代是否重置解析器,默认为false;在长时间运行的脚本中建议设置为true。
  • Parameters:BeanShell脚本的入参。入参可以是单个变量;也可以是数组,若是字符串数组,两个元素之间用空格隔开;也可以是常量。
  • File Name:BeanShell脚本可以从脚本文件中读取。
  • Script:在Script区直接写BeanShell脚本。

简单写一demo增加一个sleep等待一分钟:

58d3bab8c92cbeddc3bd060a96f394ea.png

  try {            Thread.sleep(1000);        } catch (InterruptedException e) {            e.printStackTrace();        }

增加一个Java Request请求,并且增加时间验证是否按照自己设定的定时运行脚本: 

Java Request ${__time(yyyy-MM-dd HH:mm:ss:SSS,)}

95504b6ab4c9be4bbec6caa6d1b10413.png

增加结果查看树:

fc30911e7b513b886f5793955948d33f.png

结果显示按之前设置的每个1秒钟运行

9、Precise Throughput Timer 精准吞吐量定时器

bbd8b8e068eadf935e6bf9de01fc71fa.png

  • Target Throught:目标吞吐量

  • Throught Period:表示在多长时间内发送Target Throught指定的请求数(以秒为单位)

  • Test Druation:指定测试运行时间(以秒为单位)

  • Number of threads in the bath:用来设置集合点,等到指定个数的请求后并发执行其它参数默认即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值