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
集合点: 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,每到输入用户名和密码登录时,所有的虚拟 ...
随机推荐
- XOR 加密简介
本文介绍一种简单高效.非常安全的加密方法:XOR 加密. 一. XOR 运算 逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算". 它的定义是:两个 ...
- Azure 基础:Table storage
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table.其中的 Table 就是本文的主角 Azure Tabl ...
- 后台开发之IO缓冲区管理
Linux系统IO中write原型为 ssize_t write(int filedes, const void * buff, size_t nbytes) ; 当调用write写数据的时候,调 ...
- Leetcode 494 Target Sum 动态规划 背包+滚动数据
这是一道水题,作为没有货的水货楼主如是说. 题意:已知一个数组nums {a1,a2,a3,.....,an}(其中0<ai <=1000(1<=k<=n, n<=20) ...
- Spring学习(22)--- AOP之Advice应用(下)
(六)Advice parameters(advice带参数的情况) 例子: 修改MyAspect(添加around_init方法): package com.aop.schema; import o ...
- ADO.NET中的DataSet和DataReader
ADO.NET提供两个对象用于检索关系型数据并把它存储在内存中,分别是DataSet和DataReader.DataSet提供内存中关系数据的表现--包括表和次序.约束等表间的关系的完整数据集合.Da ...
- SICP-1.4-函数设计
何为好的函数 每个函数只完成一个工作 不要做重复工作 如果你多次复制一段代码块,说明你应该进行函数抽象了 定义一般化函数 避免特例化 函数说明 一般通过三引号说明 help调出函数说明 避免过多的参数 ...
- ionic中应用sass
在学习ionic过程中看到sass,总结了一下基本用法和问题解决办法1.首先需要一个ionic项目,并执行下面的命令ionic start CustomSass blank && cd ...
- WCF学习——构建第二个WCF应用程序(四)
一.WCF服务端应用程序 1.创建WCF服务端应用程序项目 打开Visual Studio 2013,在菜单上点击文件->新建->项目->WCF服务应用程序.在弹出界面的" ...
- 大数据 Hadoop,Spark和Storm
大数据(Big Data) 大数据,官方定义是指那些数据量特别大.数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理.大数据的主要特点为数据量大(Volume),数据类别复 ...