关于Jmeter线程数Ramp-Up.循环次数的理解和实验数据
1. 关于线程组参数

线程组:即一个线程组实例里面包括多个串行的请求或动作。一个线程组的从启动到结束的时间取决于你线程中的步骤数量。
线程数:即用户数,在Ramp-up时间内(包括循环),简单把线程数理解为并发数其实不是很准确,理解为同时在线用户数更好。
Ramp-up 时间:决定多长时间启动所有线程,例上图所示如线程数是10,Ramp-up为5秒,那么每秒启动2个线程请求发出去。
循环次数:如上图循环次数为2,那么问题来了,第二次循环是什么时候开始的呢。
先说结论,第二次循环基础在第一次启动时就跟着启动了。也就是说,上图的配置会在5秒内总共启动10*2个线程组实例。那么也就是说循环开始的时间几乎和第一次启动时间相同。
1.1. 实验
1.1.1. 实验准备

我们在Java后台的Controller定义一个测试方法,这个测试方法没用任何业务逻辑,理论上它基本不会消耗时间,接近0秒即可返回。
我们在这个后台定义一个全局静态内存变量,用于记录访问的次数N。
并在访问时打印出当前时间和次数数字。
1.1.2. 循环一次的实验
下面我们以只循环一次的配置实验,如下配置:




结论:当循环次数为1时,一共用时5秒,并且被平均化了,每2秒启动两个线程组实例。
1.1.3. 循环2次的配置
我们把Tomcat重启一下,让全局静态变量归0.然后试验循环2次的配置。





TPS为:4.4,平均每个请求时间为12毫秒。中位数是3毫秒。共启动20个线程组实例。
从上图可以看出从第一个线程组实例时间:2022-01-16 21:14:09:829至最后一个线程组实例2022-01-16 21:14:14:152共计用时:5秒钟,可以看到在5秒内JMeter也把第二次循环启动了。
结论:如果Ramp up 这个时间是前面第一次循环在在Ramp up时间之后才启动第二次循环的话,那么第11次请求到第20次请求它就不可能是前5秒这个时间段内出现。第11次开始必须都在2022-01-16 21:14:14:152之后启动才对,但实验的结果即不是如此。循环开始的时间几乎和第一次启动时间相同,也就是说10个线程5秒内启动,循环2次,就是等于第一个线程启动一次开始循环2次了。
所以Ramp up这个时间是表示启动所有线程实例数的时间。所以这个时间需要有一个合理的设计。并发数不能仅仅只是看线程数。
这个是和网上查询的多处资料说的一次,那么并发数到底怎么计算呢。如配置10并发如何配置呢?其实有很多种配置,如下图:

并发数=(线程数*循环次数)/ramp-Up
网上其他资料可参考1:https://blog.csdn.net/u013908944/article/details/97383303
网上其他资料可参考2:http://www.javashuo.com/article/p-dwqyfsqb-tk.html
2. 循环的意义

循环是为了让抽样更多,模拟客户端用户登录点击操作进行线程大量发起并持续性循环发起。线程组实例启动后它是需经过线程组内部的各个步骤请求来完成的,当组织线还没有走完,可能第二个又来了直第N个结束。那中间就会产生N个交集,以模拟达到并发数测试。
如下图所示:

关于Jmeter线程数Ramp-Up.循环次数的理解和实验数据的更多相关文章
- jmeter 线程数—请求数详解
一个性能测试请求负载是基于一个线程组完成的.一个测试计划必须有一个线程组.测试计划添加线程组非常简单.在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选 ...
- Jmeter线程组使用详解,持续加压线程组详解
以下罗列的是Jmeter 所有线程组的详解,包括官方自带的线程组,和官方插件的线程组.官方线程组安装,详见之前的文章:https://www.cnblogs.com/beimingyouyuqingc ...
- 【转】关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念 笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!,望大家 ...
- 关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念 笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!,望大家 ...
- JMeter命令行方式运行时动态设置线程数及其他属性(动态传参)
在使用JMeter进行性能测试时,以下情况经常出现: 1.测试过程中,指定运行的线程数.指定运行循环次数不断改变: 2.访问的目标地址发生改变,端口发生改变,需要改写脚本. 上面的问题在GUI中,直接 ...
- shell 外部传入jmeter脚本线程数,rampUp时间,持续运行时间
jmeter参数化部分参考上一篇 shell参数说明:$1线程数,$2:全部并发数rampup时间,$3:脚本持续运行时间,$4:每次脚本循环持续时间 $5:所以循环持续时间 #!/bin/bash ...
- 3.jmeter jsr232 脚本获取当前测试的正在活动的线程数
jsr232 groovy 脚本获取当前测试的正在活动的线程数 (需要选择 groovy类型, 如果使用beanshell或者javascript,请根据其语法稍作修改即可) import org.a ...
- jmeter的线程数,并发用户数,TPS,RPS 关系解说
背景 在做性能测试的时候,传统方式都是用并发虚拟用户数来衡量系统的性能(站在客户端视角),一般适用于一些网页站点例如首页.H5的压测:而RPS(Requests per second)模式主要是为了方 ...
- 关于jmeter线程组和循环次数的设置
初始设置:设置线程数 n = 80,循环次数a = 1,ramp-up period=5 一 计算最后一个线程的生成时间(last) 总共生成80个线程,总共需要5秒,每秒钟会启动16个线程,所以,第 ...
随机推荐
- [BUUCTF]PWN5——ciscn_2019_n_1
[BUUCTF]PWN5--ciscn_2019_n_1 题目网址:https://buuoj.cn/challenges#ciscn_2019_n_1 步骤: 例行检查,64位,开启了nx保护 nc ...
- Windows 10 彻底关闭 Antimalware Service Executable 降低内存占用
概述 最近给内网的一台电脑安装 Windows 10 专业版系统,由于此电脑不会涉及到不安全因素,所以杀毒软件非必须. 以最大限度节省系统资源考虑,默认安装的 Micoroft Defender 占用 ...
- curl -w参数简析
curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出. 输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{variable_name}的格式,如果需要输出%,doub ...
- 基于MirrorDriver的录屏技术
计算机屏幕图像的截取在屏幕的录制.计算机远程控制以及多媒体教学软件中都是关键术,基于Windows操作系统有多种截屏方法,研究的重点集中在如何快速有效的截取DBI(Device-Independent ...
- JAVA比较两个版本号的大小
/** * 比较版本号的大小 (两个版本号格式应尽量相同) * * @param v1 版本号1 * @param v2 版本号2 * @return 正数:v1大 负数:v2大 0:相等 */ pu ...
- JAVA通过经纬度获取两点之间的距离
private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math ...
- c++ 设计模式概述之享元
类写的不够规范,目的是为了缩短篇幅,实际中其不要这样做. 参考文章: 1. http://c.biancheng.net/view/1371.html 1.概述 A.享元,我的理解是: 共享的模块单元 ...
- 【LeetCode】746. Min Cost Climbing Stairs 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...
- 【LeetCode】78. Subsets 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 回溯法 日期 题目地址:https://leet ...
- 【LeetCode】789. Escape The Ghosts 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...