Jmeter-定时器

本文详细解析了JMeter中定时器的作用域,包括固定定时器、高斯随机定时器、均匀随机定时器等,并介绍了它们在模拟真实用户行为中的角色,如延迟间隔、负载均衡和吞吐量控制。特别关注了精确吞吐量定时器和ThroughputShapingTimer在模拟系统性能的实用性。
摘要由CSDN通过智能技术生成

一、定时器的作用域

  1. 定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);

  2. 当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;

  3. 如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;

  4. 如果希望在sampler执行完之后再等待,则可以使用Test Action;

二、定时器的作用

  1. 固定定时器(Constant Timer)
    在这里插入图片描述
    备注:如果需要每个步骤均延迟,则将定时器放在与请求持平的位置,若只针对一个请求延迟,则将定时器放在该请求子节点中。

    如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

    对于“java请求”这个sampler来说,定时器相当于loadrunner中的pacing(两次迭代之间的间隔时间);

    对于“事务控制器”来说,定时器相当于loadrunner中的think time(思考时间:实际操作中,模拟真实用户在操作过程中的等待时间)。

    这里附上一个传送门,对loadrunner中的pacing和think time有比较全面的解释:https://zhidao.baidu.com/question/1431215934913423459.html

    我们通常说的响应时间,应该大部分情况下是针对某一个具体的sampler(http请求),而不是针对一组sampler组合的事务 。

  2. 高斯随机定时器(Gaussian Random Timer)
    在这里插入图片描述
    如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,上图表示暂停时间会分布在100到400之间,计算公式参考:Math.abs((this.random.nextGaussian() * 300) + 100)

  3. 均匀随机定时器(Uniform Random Timer)-统一随机定时器
    在这里插入图片描述
    和高斯随机定时器的作用差异不大,区别在于延时时间在指定范围内且每个时间的取值概率相同,每个时间间隔都有相同的概率发生,总的延迟时间就是随机值和偏移值之和。

    下面表示的是随机延迟时间的最大值是100毫秒:

    (1)Random Delay Maximum(in milliseconds):随机延迟时间的最大毫秒数

    (2)Constant Delay Offset(in milliseconds):暂停的毫秒数减去随机延迟的毫秒数

  4. 泊松随机定时器(Poisson Random Timer)
    在这里插入图片描述
    类似高斯随机定时器。定时器在每个线程请求之前按随机的时间停顿,大部分的时间间隔出现在一个特定的值,总的延迟就是泊松分布值和偏移值之和。

    (1)Lambda(in milliseconds):兰布达值(以毫秒为单位)

    (2)Constant Delay Offset(in milliseconds):固定延迟偏移(以毫秒为单位)。暂停的毫秒数减去随机延迟的毫秒数

    下面表示暂停时间会分布在100到400毫秒之间:

  5. 同步定时器(Synchronizing Timer)
    在这里插入图片描述
    作用:用来设置集合点,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力

    (1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量;0表示设置的线程组的线程数据,即是所有用户。

    (2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数;如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直死等。如果大于0,那么如果超过Timeout inmilliseconds中设置的最大等待时间后还没达到设置的线程数,Timer将不再等待,释放已到达的线程。默认为0

    同步定时器(Synchronizing Timer)的超时时间设置要求:超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

在这里插入图片描述

  1. 固定吞吐量定时器(Constant Throughput Timer)-常数吞吐量定时器
    在这里插入图片描述
    作用:按指定的吞吐量执行,以每分钟为单位。计算吞吐量依据是最后一次线程的执行时延。可以选择作用的线程:当前线程、当前线程组、所有线程组等,具体含义如下:

    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):同上,但每个线程是根据线程的上次运行时间来延迟。相当于让所有线程组整体排队。(不常用)

  2. BeanShell定时器(BeanShell Timer)
    在这里插入图片描述

  3. JSR223定时器(JSR223 Timer)

在这里插入图片描述
在这里插入图片描述
Thread.sleep(4000); 意思是指等待4秒,然后我们运行看看结果
在这里插入图片描述
9. 精准吞吐量定时器(Precise Throughput Timer)
在这里插入图片描述
作用:和Constant Throughput Timer类似,但是能更精准的控制请求。区别就是Constant Throughput Timer根据时间来做定时器(到了多少秒就发请求);Precise Throughput Timer是根据吞吐量在做计时器(到了多少量就发请求)。也就是能做到控制请求的速度和个数。
Delay threads to ensure target throughput:

–Target Throught:目标吞吐量

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

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

–Number of threads in the batch(threads):用来设置集合点,等到指定个数的请求后同时从线程组中离开

–Delay between threads in the batch(ms):延迟时间。if set to 42, and the batch size is 3, then threads will depart at x, x+42ms, x+84ms

Accuracy of generated delays:

–Use approximate throughput when sequence lenght exceeds(samples)

–Allowed throughput surplus(percent)

  1. Throughput Shaping Timer
    在这里插入图片描述

    ****作用****:用来模拟指定的系统吞吐量

    *参数说明:*

    Start RPS:RPS的起始值

    End RPS:RPS的结束值

    Duration,sec:持续时间,单位:秒

    注意:

    End RPS 设置了RPS 上限,但要达到此值是需要线程(虚拟用户〉来执行的,*****所以我们先要预设够多的线程,不然RPS目标没法达到,JMeter 线程组在运行过程中是不会自动增加线程数的,只能…次性设置。下面有个计算线程数的公式。
    比如一个请求响应时间为2秒,END RPS 为30,那么线程数:2*30=60 C响应时间*TPS)。即大约要60个线程, 考虑到运行时诸多影响因素(线程数增加后响应时间增加了), 我们还**需要预备更多的线程,也许我们加到70个线程才能满足要求,这只是一个估算值。不用担心***线程数太多时RPS 会超End RPS, 此元件会自动延迟线程的运行来稳定RPS。
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡晨丹心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值