Jmeter性能测试工具Timer定时器详解

jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很重要的一个元件,jemter提供了9种定时器,下面一一介绍:

 

一、定时器的作用域

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

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

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

二、定时器详解

1、固定定时器Constant Timer

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

<1>单线程,与sampler同级,每个sampler之间固定停顿3s,无顺序影响(若线程组设置循环2次,生效规则一样)

<2>单线程,处于sampler2下级,仅作用域sampler2,sampler2运行前停顿3s(若线程组设置循环2次,生效规则一样)

<3>多线程,与sampler同级,每个sampler之间固定停顿不固定(目前测的)

 

2、统一随机定时器Uniform Random Timer

和高斯随机定时器的作用差异不大,区别在于延时时间在指定范围内且每个时间的取值概率相同,每个时间间隔都有相同的概率发生,总的延迟时间就是随机值和偏移值之和。

该定时器可以在请求之间设置一个随机延时,每个随机延时有相同的发生概率。总的延时等于随机延时 + 偏移延时值。

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

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

<1>单线程,与sampler同级,每个sampler之间随机停顿0-3s+2s,无顺序影响(若线程组设置循环2次,生效规则一样)

<2>单线程,处于sampler2下级,仅作用域sampler2,sampler2运行前停顿0-3s+2s(若线程组设置循环2次,生效规则一样)

3、高斯随机定时器Gaussian Random Timer

Tread Delay Properties:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间

Deviation (in milliseconds):偏差值,是一个浮动范围;

Constant Delay offset (in milliseconds):固定延迟时间

<1>单线程,与sampler同级,若只设置了固定延迟偏移2000,每个sampler之间固定停顿,2s,无顺序影响(若线程组设置循环2次,生效规则一样)

<2>单线程,处于sampler2下级,仅作用域sampler2,若只设置了固定延迟偏移2000,sampler2运行前停顿2s(若线程组设置循环2次,生效规则一样)

 

4、集合点/同步定时器Synchronizing Timer

这个定时器和loadrunner当中的集合点(rendezvous point)作用相似,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力,实行并发效果(人多力量大- -哈哈!)

(1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量

等待达到多少用户时,一起并发请求

(2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数

如果为0表示一直等待,直至达到(1)中用户数才一起请求;如果非0,例如30,表示只等待30ms不管是否达到(1)中用户数

都进入到下一步的并发

 

<1>作用于所有线程和所有sampler,sampler之间的并发独立的,与sampler同级,Number of Simulated Users to Group by:设置为2,Timeout in milliseconds:0,等到集合到2个线程时,同时并发请求

 

<2>作用于所有线程和sampler2,sampler之间的并发独立的,处于sampler2下级,只作用于sampler2,Number of Simulated Users to Group by:设置为2,Timeout in milliseconds:0,等到sampler2集合到2个线程时,同时并发请求

 

<3>作用于所有线程和所有sampler,sampler之间的并发独立的,线程数设置为2,Number of Simulated Users to Group by:设置为3,Timeout in milliseconds:0,会一直等待中

<4>作用于所有线程和所有sampler,sampler之间的并发独立的,线程数设置为2,Number of Simulated Users to Group by:设置为3,Timeout in milliseconds:1000,超过1000ms等待时,会自动运行当前等到的线程

           a 若与sampler同级,超时时间会作用于左右sampler

 

           a 若处于sampler2下级,超时时间会作用于sampler2运行前

 

 

5、固定吞吐量定时器Constant Throughput Timer

 

测试需求:测试20个用户访问网站在负载达到30QPS时的平均响应时间

Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200 。

Calculate Throughput based on :有5个选项,分别是:

This thread only :控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以矣线程的数量。

All active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

All active threads in current thread group :设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同。

All active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,

每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

设置定时器的Target throughput为1200/分钟(20 QPS),设置Calculate Throughput based on 的值为All active threads 。

 

当然,Constant Throughput Timer只有在线程组中的线程产生足够多的request 的情况下才有意义,因此,即使设置了Constant Throughput Timer的值,也可能由于线程组中的线程数量不够,或是定时器设置不合理等原因导致总体的QPS不能达到预期目标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js/jq进行日期格式化为:yyyy-MM-dd 如2017-05-08

设置日期为yyyy-MM-dd,代码如下&#xff1a; function setDefaultDate() {var mydate new Date();var month myDate.getMonth() 1;var day myDate.getDate();month (month.toString().length 1) ? ("0" month) : month;day (day.toString().length 1) ? (…

【Maven】Java项目管理工具

一、为什么要Maven 在开发中经常需要依赖第三方的包&#xff0c;包与包之间存在依赖关系&#xff0c;版本间还有兼容性问题&#xff0c;有时还里要将旧的包升级或降级&#xff0c;当项目复杂到一定程度时包管理变得非常重要。 Maven是当前最受欢迎的Java项目管理构建自动化综合…

fiddler抓包工具配置详解

没有解决不了的问题&#xff0c;只是没有找到合适的方法 fiddler官网 https://www.progress.com/ 官网下载fiddler https://www.telerik.com/download/fiddler/fiddler4 fiddler插件下载 https://www.telerik.com/fiddler/add-ons 最近看到很多人都在问的一个问题&#xff0…

js 截取字符串

本文为大家介绍三种 js 截取字符串的方法&#xff1a; substring() 方法&#xff1b;substr() 方法&#xff1b;slice() 方法&#xff1b; 方法1&#xff1a;substring() 方法 string.substring(from, to) 方法从 from 位置截取到 to 位置&#xff0c;to 可选&#xff0c;没有…

【Maven】Eclipse中的Maven项目安装与配置

上一篇文章我们了解到了Maven的基本信息和如何在电脑本地安装Maven&#xff0c;这篇文章主要介绍如何在Eclipse关联Maven的配置和本地仓储地址&#xff0c;并且如何创建一个Maven项目、关联依赖包等。 一、关联Eclipse和Maven 点击Windows菜单栏下的Preference&#xff0c;找…

python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别

1、#类方法classmethod&#xff0c;只能访问类变量&#xff0c;不能访问实例变量&#xff0c;通过cls参数传递当前类对象&#xff0c;不需要实例化&#xff0c;直接【类名.方法名()】&#xff0c;可通过类对象和类对象实例访问 类方法&#xff1a;第一个参数强制为类对象&…

python两个字典合并,两个list合并

python两个字典合并&#xff0c;两个list合并 1.两个字典&#xff1a;a{a:1,b:2,c:3} b {aa:11,bb:22,cc:33} 合并1&#xff1a;dict(a,**b) 操作如下&#xff1a; 合并2&#xff1a;dict(a.items()b.items()) 如下&#xff1a; 合并3&#xff1a;c {} c.update(a) c.up…

【Python】time内置模块处理时间信息

python内置time模块&#xff0d;&#xff0d;时间获取和转换 time模块提供各种时间相关的功能 与时间相关的模块有&#xff1a;time,datetime,calendar 这个模块的功能不是适用于所有的平台 这个模块中定义的大部分函数是调用C平台上的同名函数实现 一些术语和约定的解释&#…

python反射详解

反射 #hasattr(obj,name_str)判断一个对象obj里是否有对应的name_str字符串的方法 #getattr(obj,name_str)根据字符串去获取obj对象里的对应的方法的内存地址 #setattr(object, name, value) setattr(x,“foobar”,123)相当于x.foobar 123。 #delattr(object, name) 该函数删…

C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。

题&#xff1a; 首先笔者的第一思路是前后两个字符串比较。如果相同index。 #include<iostream> #include<stdio.h> #include<string> using namespace std; int main() {string s;cout << "6请输入字符串&#xff1a;" << endl;cin …

【Python】datetime内置模块处理日期和时间

datetime库定义了2个常量和5个类。 2个常量分别是MINYEAR1和MAXYEAR9999。 5个类分别是&#xff1a; date类&#xff1a;表示日期的类 time类&#xff1a;表示时间的类 datetime类&#xff1a;表示时间日期的类 timedelta类&#xff1a;表示两个datetime对象的差值&#xff1b;…

进程与线程区别

进程概念 进程是表示资源分配的基本单位&#xff0c;又是调度运行的基本单位。例如&#xff0c;用户运行自己的程序&#xff0c;系统就创建一个进程&#xff0c;并为它分配资源&#xff0c;包括各种表格、内存空间、磁盘空间、I/O设备等。然后&#xff0c;把该进程放人进程的就…

【业务办理】广州市户口市内迁移流程

一、申办条件 符合下列条件之一的本市户籍人员&#xff08;除学校学生集体户口外&#xff09;&#xff0c;可办理户口市内迁移。 1.迁入本人合法住宅房屋地址。 2.投靠直系亲属&#xff0c;迁入其合法住宅房屋地址&#xff0c;或迁入其家庭户内。 3.因离婚、房屋所有权发生转移…

python多线程threading之阻塞线程(join)线程同步和守护线程(setDaemon(True))实例详解

一、多线程&#xff08;主线程和子线程同时执行&#xff09; 1、主线程是程序本身&#xff0c;看不到的,主线程和子线程没有依赖关系&#xff0c;同步执行的&#xff0c;若主线程先执行完&#xff0c;会等子线程执行完毕&#xff0c;程序结束 2、启动一个线程就是把一个函数传…

【Python】pyCryptodome模块实现AES加密、解密

高级加密标准&#xff08;英语&#xff1a;Advanced Encryption Standard&#xff0c;缩写&#xff1a;AES&#xff09;&#xff0c;在密码学中又称Rijndael加密法&#xff0c;是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES&#xff0c;已经被多方分析且广…

python多线程之线程锁(Lock)和递归锁(RLock)实例

一、线程锁 Threading模块为我们提供了一个类&#xff0c;Threading.Lock锁。我们创建一个该类对象&#xff0c;在线程函数执行前&#xff0c;“抢占”该锁&#xff0c;执行完成后&#xff0c;“释放”该锁&#xff0c;则我们确保了每次只有一个线程占有该锁。这时候对一个公共…

并发编程:进程,线程,协程,异步

并发编程&#xff08;不是并行&#xff09;目前有四种方式&#xff1a;多进程、多线程、协程和异步。 多进程编程在python中有类似C的os.fork,更高层封装的有multiprocessing标准库多线程编程python中有Thread和threading异步编程在linux下主要有三种实现select&#xff0c;po…

jmeter环境部署

win环境下&#xff1a; 1、复制jmeter整个包到本地解压、安装jdk 2、jdk环境环境变量配置&#xff08;电脑-属性-高级系统设置-环境变量&#xff09; 系统变量JAVA_HOME 变量值C:\Program Files\Java\jdk1.8.0_101 用户变量path 变量值%JAVA_HOME%\bin cmd下输java或jav…

【Python】pdf2image模块+poppler将PDF转换为图片

有时我们需要将PDF转换成图片&#xff0c;今天我们主要说的是pdf2imagepoppler对PDF转换成图片格式。 pdf2image是个包装器&#xff0c;真正的转换工具是poppler GitHub地址&#xff1a;https://github.com/Belval/pdf2image &#xff0c;上面也有相关的配置说明。 1、安装pdf…

jmeter五种参数化方式之CSV Data Set Config参数化

一、用户定义的变量 一般会设置全局不变的参数&#xff0c;如host、账号、密码等 设置名称username&#xff0c;password 值王荔&#xff0c;123456 线程设置2次和循环设置2次&#xff0c;2次采样器传参和结果一样 二、用户参数 添加用户参数 设置3组参数 参数化 当线程设置…