JMeter定时器一般用来设置延迟与同步。它的作用域和优先级如下:

  • 定时器的优先级高于Sampler。
  • 在同一作用域(比如控制器下)有多个定时器存在,每个定时器都会执行。
  • 在某一Sampler节点下的定时器,只对这个Sampler有效。

JMeter一共有9种定时器:

Constant Timer

固定值,多用来模拟思考时间。

Uniform Random Timer

随机时间,分布会更均匀。

Random Delay Maximum:随机延迟时间。

Constant Delay Offset:固定延迟时间。

示例:

会让线程延迟在2.0到2.1秒之间。

Precise Throughput Timer

用的比较少,比Constant Throughput Timer更复杂更高级的用来控制吞吐量的一个定时器。

Constant Throughput Timer

控制吞吐量,尽量保持Sampler产生的吞吐量(RPS)在一个固定的范围内。

Target throughput:目标吞吐量。JMeter会根据吞吐量、并发线程数来计算迭代的时间间隔,如果吞吐量大过设定值,就增加;反之减少。

Calculate Throughput based on:

this thread only:仅针对当前线程,每个线程互不干扰,分开计算需要延迟多少时间。

all active threads:把所有线程的吞吐量合在一起作为因子计算。

all active threads in current thread group:针对当前线程组中的所有线程。

all active threads (shared):在所有线程中,随便获取一个线程上次运行的实际来进行计算,结果随机不一定准确,只能努力控制吞吐量在某一个范围。

all active threads in current thread group (shared):在上面意思一样,范围是当前线程组。

Gaussian Random Timer

生成一个呈高斯分布的时间间隔,可以用来离散请求。

Deviation:一个浮动范围的偏差值。

Constant Delay Offset:固定延迟时间。

JSR223 Timer

跟BeanShell类似,可以运行JavaScript等其他语言。

JDK集成了JS的运行引擎,可以运行JavaScript脚本,JSR223是一个标准,为脚本引擎提供了统一的接口、统一的访问模式。

Poisson Random Timer

随机时间,呈泊松分布。

Lambda:泊松分布的期望和方差。

Constant Delay Offset:固定延迟时间。

Synchronizing Timer

同步定时器,用来模拟多用户并发同一时刻发起请求。

Number of Simulated Users to Group by:等待x个用户(线程)集合后开始释放(发起请求)。

默认为0,等同于设置为线程租中的线程数量。

Timeout in milliseconds:等待时长,如果等待这么长时间,还没有达到上个选项设置的数量,那么不再等待,立即释放已到达的线程。

默认为0,等待线程数达到上个选项设置的数量才释放。

BeanShell Timer

Reset Interpreter:是否每次迭代重置解释器,默认False。官方建议在长时间运行的脚本中才设置为True。

Parameters:入参,可以是单个变量,也可以是数组。

File Name:从脚本文件中读取BeanShell脚本。

Script:

ctx:通过JmeterContent实例获取运行时信息,如log.error(ctx.getThreadNum().toString());

vars:访问或设置变量,如vars.get("name")vars.put("name", "dongfanger")

props:访问JMeter属性(%JMETER_HOME%/bin/jmeter.properties),如props.get("log_level.jmeter")props.put("log_level.jmeter", "ERROR")

log:在代码中调用log类来写日志,如log.error("loadtest");

prev:可以访问前面Sampler的结果。

示例:

小结

本文首先介绍了JMeter定时器的作用域和优先级,然后分别介绍了各式各样的定时器,既能设置延迟,也能同步集合,可以固定可以随机,配置与编程并存,五花八门。

参考资料:

《全栈性能测试修炼宝典JMeter实战》

https://blog.csdn.net/hwhua1986/article/details/78214923

JMeter定时器设置延迟与同步的更多相关文章

  1. JMeter—定时器(八)

    参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第三节定时器 JMeter中的定时器一般用来设置延迟与同步.定时器的执行优先级高于取样器,在同一作用域下有多个定 ...

  2. Jmeter(十三) - 从入门到精通 - JMeter定时器 - 上篇(详解教程)

    1.简介 用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容.填表.或者查找正确的链接等.为了模拟用户实际情况,在性能测试中我们需要考虑思考时间.若不认真考虑思考时 ...

  3. Jmeter(十四) - 从入门到精通 - JMeter定时器 - 下篇(详解教程)

    1.简介 用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容.填表.或者查找正确的链接等.为了模拟用户实际情况,在性能测试中我们需要考虑思考时间.若不认真考虑思考时 ...

  4. Jmeter场景设置与监听

    目录 Jmeter场景设置 场景运行 Jmeter测试监控 Samples:取样器运行次数(提交了多少笔业务). Jmeter场景设置 场景的概念: 场景是用来尽量真实模拟用户操作的工作单元,场景设计 ...

  5. TCP定时器 之 延迟确认定时器

    TCP在收到数据段但是无需马上确认时设定,如果在超时时间之内有数据要发送到对端,则确认会随着数据一起发送,即捎带ACK,如果达到超时时间则执行定时器回调立即发送ack: 启动定时器: 延迟确认定时器调 ...

  6. 转:LPC2214的PLL与定时器设置

    原地址:http://blog.sina.com.cn/s/blog_4419d72d0100mu7h.html LPC2214的PLL与定时器设置 http://www.dpj365.cn/bbs/ ...

  7. Jmeter 日志设置---如何设置java协议中被测jar的日志?

    先转载一下Jmeter的日志设置: Jmeter运行出现问题可以通过调整jmeter的日志级别定位问题,但运行测试时建议关闭jmeter日志,jmeter打印日志耗费系统性能. Jmeter日志默认存 ...

  8. Mysql 5.7.21 设置主从库同步

    主从复制条件: Mysql 单机多实例安装参考Mysql 5.7.21 设置主从库同步 下面的操作是多实例主从复制,3306为主库,3307为从库. 主库要开启log-bin,主库和从库的server ...

  9. Visual Studio Code的设置及插件同步

    Visual Studio Code的设置及插件同步 使用Visual Studio Code开发有一段时间了,用起来是极其的顺手,但是唯独一点不爽的就是,Visual Studio Code不像Vi ...

随机推荐

  1. POJ2669不错的最大流 竞赛问题(枚举King的个数)

    题意:       有n个人,任意两个人都比一次赛(一共比了n*(n-1)/2场),赢一场得到一分,最后的时候如果得分最高,或者是自己打败了所有比自己得分都高的人就算是King,给你每个人的最后得分, ...

  2. Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章!

    Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章! 转载 原文章地址:点击 2014-01-09 Windows 怎么知道我已经连接到互联网而不是局域网? 原来当中大有文章! ...

  3. 分解uber依赖注入库dig-源码分析

    上一篇帖子 分解uber依赖注入库dig-使用篇 把如何使用dig进行代码示例说明,这篇帖子分析dig的源码,看他是如何实现依赖注入的. dig实现的中心思想:所有传入Provide的函数必须要有除e ...

  4. JSON数据显示在jsp页面上中文乱码的解决办法

    在@RequestMapping属性添加属性produces = "text/html;charset=utf-8",设置字符集为utf-8即可 代码如下: @RequestMap ...

  5. Redis(附Win10版本 和可视化工具)

    启动服务端 通过win+r,cmd 运行命令行然后输入如下指令: G: cd software cd G:\software\redis-64.3.0.503 redis-server.exe 这样就 ...

  6. C++ primer plus读书笔记——第12章 类和动态内存分配

    第12章 类和动态内存分配 1. 静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域运算符来指出静态成员所属的类.但如果静态成员是整形或枚举型const,则可以在类声明中初始化 ...

  7. CRM是什么意思,有哪些作用?

    我们总会听到一些人提到CRM或CRM系统,但是通常不知道它的含义,所以今天小Z就来详细介绍一下CRM. GartnerGroup1993年首次提出了这一概念:所谓的客户关系管理就是为企业提供一个全面的 ...

  8. 4.启动虚拟机 设置CentOS7

    启动虚拟机 CentOS设置 1.点击箭头方向即可启动我们的VMware 2.设置语言 在第一步设置完成后,我们一直等待,即可来到语言设置界面 此处我们设置[中文] 3.设置安装信息 将下面带有[感叹 ...

  9. [刷题] 226 Invert Binary Tree

    要求 翻转一棵二叉树 实现 翻转左右子树,交换左右子树的根节点 1 class Solution { 2 public: 3 TreeNode* invertTree(TreeNode* root) ...

  10. [Java] Spring 使用

    背景 JavaEE 应用框架 基于IOC和AOP的结构J2EE系统的框架 IOC(反转控制):即创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象,是Spring的基础 ...