JMeter-Timers

18.6 Timers


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

  • 高斯随机定时器
  • 泊松随机定时器
  • 均匀随机定时器
    定时器与采样器在同一范围内,无论定时器是单个还是多个,定时器都将在每个采样器之前处理;定时器与采样器不在同一范围内,将不被处理。
    如果要将定时器应用于单个采样器,可以将定时器添加为采样器的子元素;如果想在采样器之后应用定时器,需要将定时器添加到下一个采样器,或将其添加到Flow Control Action采样器的子项。

Constant Timer(常量定时器)


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


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

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


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


高斯随机定时器控制面板
  • Parameters
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(均匀随机定时器)


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


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

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


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

  • 使用计数器变量
  • 使用一个__jexl3__groovy 函数提供一个变化的值
  • 使用远程BeanShell服务更改JMeter属性
    有关详细信息,请参见 Best Practices

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

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

附1

  • 当前线程-每个线程将尝试保持目标吞吐量。总吞吐量将与活动线程数成比例。
  • 当前线程组中的所有活跃线程-目标吞吐量除以当前线程组中的所有活跃线程。每个线程将根据它上次运行的时间而决定延迟时间。
  • 所有活跃线程-目标吞吐量在所有线程组中的所有活跃线程之间分配。每个线程都会根据它上次运行的时间而决定延迟时间。在这种情况下,每个线程组都需要一个具有相同设置的恒定吞吐量计时器。
  • 当前线程组中的所有活跃线程(共享)-如上所述,但每个线程都会根据组中的任何线程上次运行的时间而延迟。
  • 所有活跃线程(共享)-如上所述;每个线程都会根据上次运行任何线程的时间延迟。
    共享和非共享模式都是为了产生期望的吞吐量,不过共享算法强调总体上更准确的目标吞吐量,非共享模式强调在线程之间目标吞吐量的均匀分布。(该部分不确定,详细查看The shared and non-shared algorithms both aim to generate the desired throughput, and will produce similar results.The shared algorithm should generate a more accurate overall transaction rate.The non-shared algorithm should generate a more even spread of transactions across threads.)

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


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

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


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

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


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

爬坡和启动峰值问题


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

多个线程组同时开始


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

每小时的迭代次数


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

  • Target throughput-目标吞吐量(样本数):60
  • Throughput period(seconds)-吞吐量周期(秒):3600
  • Test duration(seconds)-测试持续时间(秒):3600
    前两个选项设置吞吐量。即60/3600、30/1800和120/7200代表完全相同的负载级别,实际需要根据业务需求设置负载级别。例如,如果要求测试“每小时60个样本”,则设置60/3600。如果要求测试“每分钟1个样本”,则设置1/60。
    Test duration是为了确保在测试持续时间内定时器能够给出一个准确的样本数。精确吞吐量定时器在测试计划开始时就制定了自己的测试调度。例如,如果您希望以每小时60的吞吐量执行5分钟的测试,您可以将测试持续时间(秒)设置为300。注意:Test duration是针对定时器而言,并不影响测试计划的完整测试时间。

线程数和思考时间


测试低速率和可重复测试


测试高频率和长时间测试


脉冲负荷


可变负载率


监控


  • Parameters
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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350