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.循环次数的理解和实验数据的更多相关文章

  1. jmeter 线程数—请求数详解

    一个性能测试请求负载是基于一个线程组完成的.一个测试计划必须有一个线程组.测试计划添加线程组非常简单.在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选 ...

  2. Jmeter线程组使用详解,持续加压线程组详解

    以下罗列的是Jmeter 所有线程组的详解,包括官方自带的线程组,和官方插件的线程组.官方线程组安装,详见之前的文章:https://www.cnblogs.com/beimingyouyuqingc ...

  3. 【转】关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念

    关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念 笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!,望大家 ...

  4. 关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念

    关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念 笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!,望大家 ...

  5. JMeter命令行方式运行时动态设置线程数及其他属性(动态传参)

    在使用JMeter进行性能测试时,以下情况经常出现: 1.测试过程中,指定运行的线程数.指定运行循环次数不断改变: 2.访问的目标地址发生改变,端口发生改变,需要改写脚本. 上面的问题在GUI中,直接 ...

  6. shell 外部传入jmeter脚本线程数,rampUp时间,持续运行时间

    jmeter参数化部分参考上一篇 shell参数说明:$1线程数,$2:全部并发数rampup时间,$3:脚本持续运行时间,$4:每次脚本循环持续时间 $5:所以循环持续时间 #!/bin/bash ...

  7. 3.jmeter jsr232 脚本获取当前测试的正在活动的线程数

    jsr232 groovy 脚本获取当前测试的正在活动的线程数 (需要选择 groovy类型, 如果使用beanshell或者javascript,请根据其语法稍作修改即可) import org.a ...

  8. jmeter的线程数,并发用户数,TPS,RPS 关系解说

    背景 在做性能测试的时候,传统方式都是用并发虚拟用户数来衡量系统的性能(站在客户端视角),一般适用于一些网页站点例如首页.H5的压测:而RPS(Requests per second)模式主要是为了方 ...

  9. 关于jmeter线程组和循环次数的设置

    初始设置:设置线程数 n = 80,循环次数a = 1,ramp-up period=5 一 计算最后一个线程的生成时间(last) 总共生成80个线程,总共需要5秒,每秒钟会启动16个线程,所以,第 ...

随机推荐

  1. C# ASP.NET MVC/WebApi 或者 ASP.NET CORE 最简单高效的跨域设置

    概述 前面写了一篇:<C# ASP.NET WebApi 跨域设置>的文章,主要针对 ASP.NET WebApi 项目. 今天遇到 ASP.NET MVC 项目也需要设置跨域,否则浏览器 ...

  2. BitBake使用攻略--从HelloWorld讲起

    目录 写在前面 1. 什么是BitBake 2. BitBake的安装 3. 使用BitBake构建一个HelloWorld工程 后续 写在前面 <BitBake使用攻略>系列文章将从今天 ...

  3. CF135A Replacement 题解

    Content 有 \(n\) 个数 \(a_1,a_2,a_3,...,a_n\),试用 \(1\) ~ \(10^9\) 之间的数(除了本身)代替其中的一个数,使得这 \(n\) 个数的总和最小, ...

  4. CF1095B Array Stabilization 题解

    Content 有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),现在需要从这些数中删除一个数,使得 \(\max\limits_{i=1}^na_i-\min\lim ...

  5. LuoguP7080 [NWRRC2013]Ballot Analyzing Device 题解

    Content 有 \(n\) 名选手参加一个比赛,有 \(m\) 个人为他们投票.第 \(i\) 个人的投票情况用一个长度为 \(n\),并且仅包含 . 和 X 两个字符的字符串,其中,如果第 \( ...

  6. SpringCloud (一) Eureka

    Eureka Eureka 是一个服务治理组件,它主要包括服务注册和服务发现,主要用来搭建服务注册中心. Eureka 是一个基于 REST 的服务,用来定位服务,进行中间层服务器的负载均衡和故障转移 ...

  7. 重学c#系列——string.empty 和 "" 还有null[二十]

    前言 简单整理一下string.empty 和 "" 还有 null的区别. 正文 首先null 和 string.empty 还有 "" 是不一样的. nul ...

  8. .net 程序通过 crontab 无法启动,手动执行脚本可以启动

    一.问题描述 .net 网关程序需要设置定时重启,按照日常操作先把正在运行的 PID kill 掉后,再执行启动服务. 把脚本放到 crontab 计划任务上,可以把服务 PID kill 掉,但无法 ...

  9. Maven配置使用阿里云镜像

    在settings.xml文件中的mirrors下添加mirror标签 <!-- 阿里云仓库 --> <mirror> <id>alimaven</id> ...

  10. Redis报错:RDB snapshots, but it is currently not able to persist on disk 处理

    Response received : -MISCONF Redis is configured to save RDB snapshots, but it is currently not able ...