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
集合点: 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,每到输入用户名和密码登录时,所有的虚拟 ...
随机推荐
- 基于angular实现模拟微信小程序swiper组件
这段时间的主业是完成一个家政类小程序,终于是过审核发布了.不得不说微信的这个小程序生态还是颇有想法的,抛开他现有的一些问题不说,其提供的组件系统乍一看还是蛮酷的.比如其提供的一个叫swiper的视图组 ...
- mysql之 MySQL 主从复制概述
1 .主从复制简介MySQL 主从复制就是将一个 MySQL 实例(Master)中的数据实时复制到另一个 MySQL 实例(slave)中,而且这个复制是一个异步复制的过程.实现整个复制操作主要由三 ...
- 禁止windows10带来的三大隐患问题
毫无疑问的说.windows10是目前windows发布的最好版本之一,最重要的是其“免费”了.这几天在互联网上,win10有太多的争议了,尤其是你在享受免费的同时,隐私也正在流向微软公司的服务器.. ...
- WLAN高密无线网络部署的信道问题
WIFI信号的信道有两部分,其中2.4G频段有13个左右交叠的信道(14信道只在日本使用),其中只能找出3个相互不重合的信道(具体请参考文末的链接),最常用的就是1.6.11这三个,当然也可以使用其他 ...
- navicat连接oracle 报 ORA-12737 set CHS16GBK
1首先,我们打开“工具”-->"选项"菜单,见到如下界面,依据OCI library(oci.dll) 路径,导航到 navicat oci 目录下,备份里面的文件(通过在该 ...
- Kubernetes 设计概要
英文原文:Kubernetes Design Overview Overview Kubernetes builds on top of Docker to construct a clustered ...
- Spring+TaskExecutor实例
1 taskExcutor package com.test; import org.springframework.core.task.TaskExecutor; public class Main ...
- 【PHP】最详细PHP从入门到精通(四)——PHP中的字符串
PHP从入门到精通 之PHP中的字符串 大家好,继续跟进PHP最详尽的知识更新,本周,跟大家重点讲一下PHP中字符串的使用.在PHP中,字符串是非常重要的一个概念,基本上大家想到的字符串的处理功能, ...
- Canvas画布实现自定义时钟效果
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 分页插件Jpages的使用
项目原因需要前端做分页表格,之前做了一个ul的分页效果,但是感觉自己写还是造轮子了,今天网上看到Jpqges插件就试了下,感觉平时使用挺方便的,写一下自己的使用过程. 先上套图,下载下来就2个js和1 ...