JMeter-Timers

2019-11-06  本文已影响0人  MechelleWang

18.6 Timers


JMeter3.1版有一个新特性,新增了乘法因子一项,可以通过设置属性timer.factor=float number(其中float number是十进制正数)将乘法因子应用于随机定时器。
JMeter将把这个因子乘以计算出的睡眠延迟此功能可用于:

Constant Timer(常量定时器)


使用常量定时器时,每个线程在请求之间暂停相同的时间。


常量定时器控制面板
Attribute Description Required
Name 定时器名称 NO
Thread Delay 暂停的毫秒数 YES

Gaussian Random Timer(高斯随机定时器)


高斯随机定时器使得每个线程请求暂停一段随机时间(随机延迟时间),随机延迟时间总体分布在特定值附近。总的延迟时间是高斯分布值(平均值为0.0,标准偏差为1.0)乘以指定的偏差值(Deviation)加上偏移量(Offset Value)。另一种解释方法是,在高斯随机定时器中,恒定偏移量的变化具有高斯曲线分布。


高斯随机定时器控制面板
Attribute Description Required
Name 定时器名称 NO
Deviation 偏差值(毫秒) YES
Constant Delay Offset 除了随机延迟之外还需要暂停的毫秒数(原文查看Number of milliseconds to pause in addition to the random delay.) YES

Uniform Random Timer(均匀随机定时器)


均匀随机定时器使得每个线程请求暂停一段随机时间),每个时间间隔具有相同的发生概率,总延迟是随机值和偏差值的总和。


均匀随机定时器控制面板
Attribute Description Required
Name 定时器名称 NO
Random Delay Maximum 最大的随机暂停时间(单位是毫秒) YES
Constant Delay Offset 除了随机延迟之外还需要暂停的毫秒数 YES

Constant Throughput Timer(恒定吞吐量定时器)


恒定吞吐量定时器引入可变的暂停时间,使得总吞吐量(以每分钟的采样数计算)尽可能接近给定的数字,如果服务器无法处理它,或者其他计时器或耗时的测试元素阻止它,那么吞吐量将降低。
注意:虽然计时器被称为恒定吞吐量定时器,但实际应用中,吞吐量可以根据变量或函数调用定义,并且可以在测试期间更改该值,该值可以通过多种方式更改:

请注意,在测试过程中不应该经常更改吞吐量值,新值需要一段时间才能生效。

恒定吞吐量定时器控制面板
Attribute Description Required
Name 定时器名称 NO
Target Throughput 目标吞吐量 YES
Calculate Throughput based on 见附1 YES

附1

Precise Throughput Timer(精确吞吐量定时器)


精确吞吐量定时器引入可变的暂停时间,使得总吞吐量(例如,以每分钟的样本数为单位)尽可能接近给定值。当然,如果服务器不能处理它,或者如果存在其他计时器,或者如果没有足够的线程,或者耗时的测试元素阻止它,那么吞吐量将降低。
虽然该定时器被称为精确吞吐量定时器,但其目的并不是在测试期间每隔1秒产生相同数量的样本。
定时器最适合36000个请求/小时以下的QPS,测试时间过长这个值会有所波动(如果您的目标相差很大,请参阅下面的监控部分)。

精确吞吐量控制器在测试计划中的最佳位置


计时器由所有同级元素及其子元素继承。所以精确吞吐量计时器最好放在测试循环的第一个元素之下。例如,您可以在开始处添加一个虚拟采样器,并将计时器放在该虚拟采样器下。

精确吞吐量定时器实现原理


精确吞吐量定时器的实现是基于泊松过程,但泊松过程可能会出现以下的问题。真正的泊松过程的抵达率λ会比较大(λ表示单位时间内事件的平均发生次数),这会导致,比如λ=1,则可能会在60秒长的测试中得到50个样本。恒定吞吐量计时器会将λ收敛到指定的速率,但它更倾向于以偶数间隔生成样本。

爬坡和启动峰值问题


我们可以使用“加速”或类似的方法来避免测试开始时出现的峰值。例如,如果将线程组配置为有100个线程,并将Ramp-up Period(爬坡周期)设置为0(或者一个很小的数),所有线程将同时启动,则会产生一个负载的峰值。除此之外,如果设置的Ramp-up Period(爬坡周期)太高,则可能无法达到所需的负载。
精确的吞吐量计时器以随机方式执行所有线程,因此它可以用于生成恒定负载,并且爬坡周期和延迟最好设置为0。

多个线程组同时开始


当测试计划包含多个线程组时,也可能会出现爬坡问题。为了缓解这个问题,通常会向每个线程组添加随机延迟,以便线程在不同的时间启动。
精确的吞吐量计时器可以避免这个问题,因为它以随机方式调度执行线程组,而不需要手动添加额外的随机延迟来缓解启动峰值。

每小时的迭代次数


例如,我们需要完成每小时60次迭代,则需要进行如下配置(其他参数可以保留其默认值)

线程数和思考时间


测试低速率和可重复测试


测试高频率和长时间测试


脉冲负荷


可变负载率


监控


Attribute Description Required
Name 定时器名称 NO
Target throughput (in samples per 'throughput period')-目标吞吐量 定时器名称 YES
Throughput period (seconds)-吞吐量周期 定时器名称 YES
Test duration (seconds)-测试持续时间 定时器名称 YES
Number of threads in the batch (threads)-每次迭代的线程数 定时器名称 YES
Delay between threads in the batch (ms)-每次迭代线程间的延迟 定时器名称 YES
Use approximate throughput when sequence length exceeds (samples)-当序列长度超过(样本)时使用近似吞吐量 定时器名称 YES
Allowed throughput surplus (percents)-允许吞吐量盈余(百分比) 定时器名称 YES
Random seed (change from 0 to random)-随机数(从0开始) 定时器名称 YES
上一篇 下一篇

猜你喜欢

热点阅读