三、Jmeter 定时器
首先需要清楚Jmeter中各个元件的执行顺序:
元件的执行顺序
了解了元件有作用域之后,来看看元件的执行顺序,元件执行顺序的规则很简单,在同一作用域名范围内,测试计划中的元件按照如下顺序执行。
(1)配置元件(config elements )
(2)前置处理程序(Per-processors)
(3)定时器(timers )
(4)取样器(Sampler)
(5)后置处理程序(Post-processors) (除非Sampler 得到的返回结果为空)。
(6)断言(Assertions)(除非Sampler 得到的返回结果为空)。
(7)监听器(Listeners)(除非Sampler 得到的返回结果为空)。
关于执行顺序,有两点需要注意:
* 前置处理器、后置处理器和断言等元件公能对 取样器作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
* 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。
备注:执行顺序依次为:配置元件(CSV Data Set Config)-前置处理器-定时器-取样器-后置处理器-断言-监听器
一、定时器的作用域
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、固定吞吐量定时器(Constant Throughput Timer)

可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行。
吞吐量计算的范围可以为指定为当前线程、当前线程组、所有线程组等范围,并且计算吞吐量的依据可以是最近一次线程的执行时延。这种定时器在特定的场景下,还是很有用的。
3、同步定时器(Synchronizing Timer)

这个定时器和loadrunner当中的集合点(rendezvous point)作用相似,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力(人多力量大- -哈哈!)
(1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量
(2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数
思考:超时时间一般情况设置多大???
首先,要清楚为什么要设置这个超时时间?
1、实际运行过程中,可能出现始终无法达到集合点设置的并发要求;如果出现这种情况的话Jmeter会一直卡顿在那里,等待满足要求,才会继续往下执行;
2、为了避免上述情况的发生,我们需要设置一下集合点的超时时间
设置规则为:因为集合点超时时间的单位为ms
计算公式:超时时间/1000 > 集合并发数/(设置线程数/启动加载时间)
性能测试中我们经常提到一个概念就是“并发”,其实在实际真实的性能测试中是不存在真正的并发的。为了更真实的模拟对一个请求的并发测试场景,我们通常设置一个集合点,JMeter中提供了这样的一个功能设置。
那么集合点的大致概念是什么呢?
简单理解就是:设置一个阀值(请求数量),当请求数达到这个阀值时,允许请求同时发出。例如:想测试一座桥的并发(忽略载重等其他因素,只考虑通过),那么并发的请求就是类似于多少辆车可同时通过桥,而车辆一般情况下是不可能同时通过桥的,因而我们可以在桥头A,设置一个集合点,等车辆数满足一定的数量,同时让车辆通过此桥。
添加路径:右键单击线程组,依次选择【添加/定时器/Synchronizing Timer】即可添加集合点

添加后,显示如下图所示:

PS:超时时间为0时,默认无超时限制。
实际运行过程中,可能出现请求数当不满足集合点设置的请求数时,JMeter一直卡顿在如下页面:

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

三、Jmeter 定时器的更多相关文章
- Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用
OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...
- cocos2dx三种定时器使用
cocos2dx三种定时器的使用以及停止schedule.scheduleUpdate.scheduleOnce 今天白白跟大家分享一下cocos2dx中定时器的用法. 首先,什么是定时 ...
- muduo网络库学习笔记(三)TimerQueue定时器队列
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...
- C#中三种定时器对象的比较 【转】
https://www.cnblogs.com/zxtceq/p/5667281.html C#中三种定时器对象的比较 ·关于C#中timer类 在C#里关于定时器类就有3个1.定义在System.W ...
- C#三种定时器
三个定时器分别是 实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用. System.Windows.Forms.Timer 提供以指定的 ...
- JMeter定时器设置延迟与同步
JMeter定时器一般用来设置延迟与同步.它的作用域和优先级如下: 定时器的优先级高于Sampler. 在同一作用域(比如控制器下)有多个定时器存在,每个定时器都会执行. 在某一Sampler节点下的 ...
- JMeter—定时器(八)
参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第三节定时器 JMeter中的定时器一般用来设置延迟与同步.定时器的执行优先级高于取样器,在同一作用域下有多个定 ...
- JMETER 定时器 之 常数吞吐量定时器
定时器: 默认情况下,Jmeter线程在发送请求之间没有间歇.建议为线程组添加某种定时器,以便设定请求之间应该隔多长时间.如果测试人员不设定这种延迟,Jmeter可能会在短时间内产生大量访问请求,导致 ...
- C#中三种定时器对象的比较
·关于C#中timer类 在C#里关于定时器类就有3个1.定义在System.Windows.Forms里2.定义在System.Threading.Timer类里3.定义在System.Timers ...
随机推荐
- 【Oracle】修改列的大小
alter table 表名 modify column_name varchar2(32) alter table 表名 modify (column_name1 varchar(20) defa ...
- 代码审计 - BugkuCTF
extract变量覆盖: 相关函数: extract()函数:从数组中将变量导入到当前的符号表.把数组键名作为变量名,数组的键值作为变量值.但是当变量中有同名的元素时会默认覆盖掉之前的变量值. tri ...
- Vue MVVM模型原理
最近反思了下自己,觉得自己很急躁,学技术总是觉得能用就行了,其实这样很不好,总是这样,就永远只能当用轮子的人.好了,废话不多说,转入正题: 要理解MVVM的原理,首先要理解它是什么,怎么运作起来的: ...
- Spring Security,没有看起来那么复杂(附源码)
权限管理是每个项目必备的功能,只是各自要求的复杂程度不同,简单的项目可能一个 Filter 或 Interceptor 就解决了,复杂一点的就可能会引入安全框架,如 Shiro, Spring Sec ...
- 针对Fluent-Bit采集容器日志的补充
hello,之前我写过<一套标准的ASP.NET Core容器化应用日志收集分析方案>,在公司团队.微信公众号.Github上反映良好. 其中配置Fluent-bit使用Forward协议 ...
- 第一个 Maven 应用程序
概述 使用 Maven 创建一个 Java Web 应用程序 创建 Maven 项目 选择 File -> New -> Project... 选择 Maven 项目 填写项目信息 选择工 ...
- ECMAScript6常用新特性总结
一.let声明变量 1.基本用法: ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. 如下代码: { let a = 10; var ...
- CF413C
正文 题意: 给 n 个关卡,每个关卡得分为 ai,有 m 次机会可以选择一 个关卡通过后不得分,而将现有得分翻倍 你可以安排关卡的通过顺序和策略,求最大得分. 分析: 看到这道题首先想到的就是贪心, ...
- BZOJ2120 数颜色(带修改的莫队算法)
Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜 ...
- 查看Linux用的桌面是GNOME、KDE或者其他(转)
http://superuser.com/questions/96151/how-do-i-check-whether-i-am-using-kde-or-gnome 1) pgrep -l &quo ...