JMeter定时器(一)

一 前言

环境: window 10 JMeter 5.3

二 定时器

定时器(Timers)的作用就是对取样器(sampler)的执行进行延迟,所以,定时器只对同作用域的取样器有意义

定时器会在其所处作用域内的取样器之前执行。把定时器添加为取样器的子节点,这样就会在取样器之前执行

1 固定定时器

这个比较简单,延迟时间是固定的
image
image
image

上图对比可以看到,第2个请求比第一个晚了3秒

2 高斯随机定时器

image

这个定时器一直搞不懂它的延时时间到底怎么算的,其它博主每个人的理解好像都不一样。
去看了正态分布结合其它资料,我的理解是这样
该延迟时间是一个随机值,但是该随机值符合一个正态分布的规律,正态分布有一个68-95-99.7(大约)的准则
固定延迟相当于整台分布的均值,偏差相当于正态分布的标准差。如果产生随机数的次数足够多,大约68%的随机数会在 均值加减一个标准差的范围,大约95%的随机数会在 均值加减两个标准差的范围,大约99.7%的随机数会在 均值加减三个标准差的范围,当然,还有一小部分数据会在上述三个范围之外,但是概率很小很小

明白了这个随机范围,具体的参数要设置为什么值呢

假设,我们希望延迟在3-10秒之间,如果结合高斯随机定时器来说,延迟在3-10秒之间是不准确的,只能说68%的延迟在3-10秒或者95%的延迟在3-10秒或者99.7%的延迟在3-10秒,只要符合其中一种,我们就可以说大多数延迟在3-10秒, 这里我们就假定是95%
首先是选择均值,就用最简单的办法选择中间值6.5
然后是标准差,6.5与3是3.5的差距,与10同样是3.5的差距,由于95%是两个标准差,也就是说3.5是2个标注差的值,那标准差就是1.75

试一下
image

image

结果就不贴出来了,我这里3次延迟是,10s 7s 11s,考虑到其它操作及因素的影响,实际随机产生的延迟时间是小于这三个值的

上面是我个人对于高斯随机定时器的理解,欢迎大家指正

3 统一随机定时器

image
延迟时间=固定延迟+随机延迟(0到随机最大延迟的一个随机数)
试一下
image
image

结果树中三次延迟分别是4s 4s 2s,考虑到其它操作及因素的影响,实际计算出的延迟时间是小于这三个值的

4 Synchronizing Timer

该定时器会阻塞线程直到你设定的线程参数或者时间参数,然后这些被阻塞的线程会一起被释放,看起来很像并发
image
image

group by那个参数:希望被阻塞的线程数,如果是0,则相当于设为配置中线程组的数量
timeout 参数:如果为0,则JMeter会一直等待直到达到设定阻塞线程参数,如果永远达不到,则会无限等待下去,只有强制停止才会停止

如果大于0,达到timeout参数的时间后,则不再等待,无论阻塞线程是否达到

综上,应该结合计算机配置及JMeter配置合理设置这两个参数

5 Constant Throughput Timer

image

固定吞吐定时器(大概翻译),所谓吞吐,就是每分钟的sampler的数量,即Target throughput参数值,但这个值可以是不固定的,所以这个名字有些误导人,这个参数值可以是变量值或函数调用的返回值,甚至可以在执行期间不断变化

如果该值是变化的,官网介绍了三种方式

  • using a counter variable
  • using a __jexl3, __groovy function to provide a changing value
  • using the remote BeanShell server to change a JMeter property

Calculate Throughput based on:基与哪些线程来产生设定的吞吐参数。有下面几种选项
image

posted @ 2024-04-25 18:14  工作手记  阅读(1)  评论(0编辑  收藏  举报