JMeter 之Synchronizing Timer运行原理
JMeter测试并发场景,是通过设置Synchronizing Timer(同步定时器),熟悉LoadRunner性能测试的话,就知道里面有个概念:集合点。
Synchronizing Timer则可以理解为集合点的作用。
Synchronizing Timer的设置策略很简单:
- Number of Simulated Users to Group by:意思是按组模拟用户数,也就是设置组的用户数(并发数),当线程组Thread Strated达到该值时,同步执行请求。默认为0,即当前线程组的所有线程数。
- Timeout in milliseconds:超时时间(单位:毫秒),组在超时时间后达不到设置的线程数时,会丢弃继续请求,释放已达到的线程。默认为0,即无超时限制,会一直等待。
下面以一张图,理解Synchronizing Timer:
假设存在这样的一个场景:一个线程组有3个线程,Ramp-Up Period为30s,循环次数为1(可忽略,因为不影响请求)。
为线程组添加一个默认的集合点,即使Number of Simulated Users to Group by和Timeout in milliseconds都为0。
那么由Log Viewer跟踪分析,运行结果图:
第1个线程,在点击运行时就启动(Thread strated:Thread Group 1-1),但未运行(即没有发送HTTP请求),然后等到第10s,第2个线程马上启动(Thread strated:Thread Group 1-2),然后等到第20s时,马上启动第3个线程(Thread strated:Thread Group 1-3),接着线程Thread Group 1-1、Thread Group 1-2、Thread Group 1-3在第20s同时运行.....在接下来的运行时间里,无论什么时候有其中一个线程运行失败,则会无期限地等待.....这就会带来运行卡住的问题。
问题来了,如果设置Synchronizing Timer的运行策略,即能保证性能测试正常执行,又能真实的反映性能结果?
我们必须保证对Synchronizing Timer的设置有效且有意义:
1.对Number of Simulated Users to Group by有效设置:
并发用户数<=总线程数
2.Timeout in milliseconds有效设置:
超时公式:并发线程数* Ramp-Up Periond(in seconds)/总线程数
当并发线程数=总线程数时,则超时时间等于Ramp-Up Periond(in seconds)
但,当超时时间<并发线程数*Ramp-Up Periond(in seconds)/总线程数 时,启动执行,则会一直提示:“WARN - jmeter.timers.SyncTimer: SyncTimer Synchronizing Timer timeouted waiting for users after:10ms”,此时的设置会影响性能结果,如图:
结论:
JMeter通过添加Synchronizing Timer(同步定时器)来实现线程并发,Synchronizing Timer的设置策略中要保证Synchronizing Timer的设置有效且有意义,那么要设置并发用户数<=总线程数,且超时时间设置>=并发线程数*Ramp-Up Periond(in seconds)/总线程数。
JMeter 之Synchronizing Timer运行原理的更多相关文章
- Jmeter结构体系及运行原理
Jmeter结构体系 把Jmeter的结构体系拆分为三维空间,如图: X1~X5:是负载模拟的一个过程,使用这些组件来完成负载的模拟: X1:选择协议,模拟用户请求,检查服务器响应是否正确,然后收集结 ...
- Jmeter之Synchronizing Timer(同步集合点)
在性能测试时,需要压测并发,此时就需要用到Synchronizing Timer组件. 一.界面显示 二.配置说明 1.名称:标识 2.注释:备注 3.Grouping (1.Number of si ...
- Jmeter资源监控工具ServerAgent运行原理的一些研究
用过Jmeter的应该都了解,有个ServerAgent工具,放在linux或者windows服务器上开启服务后,在Jmeter中配置下监视器,就可以抓取到服务器的一些资源信息,抓取的主要是cpu.内 ...
- Jmeter组成结构及运行原理
Jmeter结构主要组成要素包括:测试计划,线程组,采样器以及监听器.对于各部件的作用域关系如下图: Jmeter是纯Java程序,使用JVM,运行采用多线程完成,往往单台负载机由于机器配置有限,支持 ...
- jmeter之Synchronizing Timer的理解
该功能类似loadrunner的集合点,一般按照jmeter的树形结构,放在需要设置集合点的请求之前,两个参数的意思,我们先看官网的解释: 大概意思就是: Number of Simulated Us ...
- JMeter学习-021-JMeter 定时器(Synchronizing Timer)之集合点应用
性能测试中我们经常提到一个概念就是“并发”,其实在实际真实的性能测试中是不存在真正的并发的.为了更真实的模拟对一个请求的并发测试场景,我们通常设置一个集合点,JMeter中提供了这样的一个功能设置. ...
- Jmeter之集合点(Synchronizing timer 同步定时器)
1.集合点介绍 LR中集合点可以设置多个虚拟用户等待到一个点,同时触发一个事务,以达到模拟真实环境下多个用户同时操作,实现性能测试的最终目的.jmeter中使用Synchronizing Timer实 ...
- jmeter集合点使用方法:Synchronizing Timer
LR中集合点可以设置多个虚拟用户等待到一个点,同时触发一个事务,以达到模拟真实环境下多个用户同时操作,实现性能测试的最终目的. jmeter中使用Synchronizing Timer实现Lr中集合点 ...
- 【Jmeter】集合点Synchronizing Timer
集合点: 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,每到输入用户名和密码登录时,所有的虚拟 ...
随机推荐
- python str的一些方法
在python有各种各样的string操作函数.在历史上string类在python中经历了一段轮回的历史.在最开始的时候,python有一个专门的string的module,要使用string的方法 ...
- SQL数据库的多表查询
多表查询分为 内.外连接 外连接分为左连接(left join 或left outer join).右连接(right join 或者 right outer join).和完整外部连接 (full ...
- nodejs 路径
在学习的时候遇到了 一些路劲方面的疑惑 便查询了一些 module.filename:开发期间,该行代码所在的文件.__filename:始终等于 module.filename.__dirname: ...
- WINDOWS程序设计对话框加载显示bmp图像及刷新
参考文章:http://blog.csdn.net/wangjian8006/article/details/7464431 图片的加载与显示也是属于窗口绘制这一部分的.所以其代码要写在消息函数的WM ...
- Windows系统如何使用sqlmap
使用方法:需要安装python,不能安装最新版本的python3.2.2只能安装2.6-3.0这些版本,包括2.6,3.0 这里,我提供一个Python的安装包.点击这里下载→ Python2.7 然 ...
- [转]如何使用BackTrack破解WIFI无线网络的WEP密钥
aireplay-ng - -a (bssid) -h ::::: -e (essid) (interface) 你可能已经知道如果你想要加锁自己的WIFI无线网络,你最好选择WPA加密方式,因为WE ...
- java实现发送邮件
前言:先引入javamail用到的jar包, 自己下载http://fhed.v061.10000net.cn/gulili198509051s/newjspkongjian/ueditor/jsp/ ...
- integer与int区别以及integer.values()方法详解
声明:本文为博主转载文章,原文地址见文末. 知识点1:integer和int的区别 /* * int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为 ...
- 通过数据,修改金蝶ERP的收料通知单不合格和合格数量,修改生产投料单,委外发出数量
update POInStockEntry set FAuxNotPassQty=不合格数量 where FInterID=(select FInterID from POInStock where ...
- 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题
1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...