JMeter线程
线程Threads:场景设置,模拟并发用户发送请求,设置并发策略。即以线程的方式来模拟多用户并发的。常用线程包括:线程组、 jp@gc-Stepping Thread Group、bzm-Arrivals Thread Group。
一、线程组
【线程数】:虚拟用户数,控制多少用户并发
【Ramp-Up时间】:启动所有线程需要的时间;
1. 若是线程数过多,则会>该值启动完所有线程。
2. 为0代表立即启动所有线程;一般不这么设置,因为在测试的开始就建立全部线程并立即发送访问请求,会引起不正常的初始访问峰值。
3. 设置为T,N个线程时,JMeter将每隔T/N秒建立一个线程。T过大会降低访问峰值的负载:后面的线程还没启动,前面启动的部分线程已经结束了。
4. 网上提到设置合理的启动时间的方法:让初始吞吐量接近平均吞吐量,避免启动时间过小,同时最后一个线程启动时,第一个线程还未结束,避免启动时间过大。
【循环】:每个线程的循环次数。用来延长单个线程的运行时间,从而保证当最后一个线程启动时,所有线程都在运行中,达到压测效果。
1.若不勾选永远,设置为固定值。为达到最后一个线程启动时第一个线程还未结束,循环次数的计算方法为:
(1)假设线程数:5,ramp-up:10s,rt:0.2s
(2)最后一个线程启动开始时间 S = 10 - 10/5 = 8s
(3)第一个线程运行时间应该 > 8s
(4)循环次数 a > 8/0.2 = 40,即循环次数最少为40次,此时整个测试理论运行时间 = 40*0.2 + 8 = 16s
【same user on each iteration】迭代使用相同的用户,即使循环时参数化提取不同用户名,请求时使用的是同样的session,不是真正的并发。
【延迟创建线程直到需要】:
- JMeter 所有的线程是一开始就创建完成的,只是递增的时候会按照上面的规则递增;
- 如果选择了这个选项,则不会在一开始创建所有线程,只有在需要时才会创建。这样CPU 消耗会更平均,但是这时会有另一个隐患:稍微影响正在跑的线程;
- 如果不选择,在启动场景时,JMeter 会用更多的 CPU 来创建线程,它会影响前面的一些请求的响应时间,因为压力机的 CPU 在做其他事情。
【调度器】:循环次数中勾选永远,持续时间是就是并发的时间。
举例:
设置 线程数:100,Ramp-Up:1s, 循环:2。
表示1秒内启动100线程并循环2次。设置 线程数:3,Ramp-Up:1s, 循环:永远,持续时间:5s。
1s内启动3个线程,持续循环5s。
二、阶梯加压线程组 jp@gc-Stepping Thread Group

- 模拟用户并发逐渐增长的场景,可以测试在不断加压过程中观察不同梯度下的Error、Respose Time和TPS的数值变换情况
- 一般用来测试每秒最大并发数,平衡状态下,并发用户数n = rps*rt
- 一般结合监听器 Active Threads Over Time 使用
- 适用于单客户端进行阶梯式压测,但不适合分布式压测。因为当用于分布式压测时,管控机的控制台只能显示单个客户端的测试结果,而不是汇总起来。
- Stepping Thread Group插件相对来说比较旧,在plugins插件组中,还有一个类似的优化过的插件,叫做:Concurrency Thread Group
JMeter线程的更多相关文章
- jmeter线程组之间传递参数
JMeter 变量作用域局限于所属线程.这样设计是经过深思熟虑的,目的是让测试线程能够独立运转.有时候用户可能需要在不同线程间(可能属于同一个线程组,也可能不属于同一个线程组)传递变量. 其中一种方法 ...
- 【转】关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念 笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!,望大家 ...
- 关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念 笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!,望大家 ...
- JMeter线程组编辑区揭秘
线程组编辑区如下: 有点复杂,但是慢慢看下来,还是比较容易理解. Name 带有业务含义的名字. Comments 线程组的备注说明. Action to be taken after a Sampl ...
- JMeter 线程组之ConcurrencyThreadGroup介绍
线程组之ConcurrencyThreadGroup by:授客 QQ:1033553122 测试环境 apache-jmeter-3.2 jmeter-plugins-manager-1.3.jar ...
- JMeter 线程组之Stepping Thread Group插件介绍
线程组之Stepping Thread Group插件介绍 by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13 插件: https://jmeter-plu ...
- jmeter线程组之间传参
背景介绍: 使用jmeter做登录和搜索接口的测试: 登录接口请求头为:Content-Type: application/x-www-form-urlencoded; charset=UTF-8 搜 ...
- Jmeter 线程组、运行次数参数化
Jmeter的jmx文件保存了线程数和运行次数等参数,这个参数可以在命令行中传入参数的方式来修改数值 步骤如下 1.生成线程和运行次数的参数 Jmeter选项中函数助手对话框,选中__P参数,这个参数 ...
- jmeter线程组介绍
Jmeter中的测试计划是一直有的,但可以在右侧修改名字,要开始做具体测试设计前,都需要在测试计划下边添加一个线程组,添加路径为鼠标捕获测试计划后,点击鼠标右键->添加->Threads( ...
- Jmeter 线程组、运行次数参数化(转)Jpara1=4 -Jpara2=5
Jmeter的jmx文件保存了线程数和运行次数等参数,这个参数可以在命令行中传入参数的方式来修改数值 步骤如下 1.生成线程和运行次数的参数 Jmeter选项中函数助手对话框,选中__P参数,这个参数 ...
随机推荐
- JS基础笔记汇总
JS基础笔记最全的汇总 javascript介绍以及起源目录1.变量和常量的知识2.基本数据类型3.运算符4.基本数据类型间的转换5.流程控制语句 一.javascript介绍以及起源 js一种直译型 ...
- NLB+ARR实现IIS下的高可用性负载均衡
NLB+ARR实现IIS下的高可用性负载均衡 场景: 高可用/可伸缩集群: NLB部署: 很简单, 暂略. 3.ARR部署 ARR全称叫Application Request Router, 是I ...
- MySQL Delete 表数据后,磁盘空间并未释放,为什么?
有开发小哥咨询了一个问题,记录一下处理过程分享给有需要的朋友.问题如下:MySQL数据库中有几张表增删比较频繁.数据变动剧烈且数据量大,导致数据增长过快,磁盘占用多.为了节约成本,定期进行数据备份,并 ...
- 微信小程序级联选择器省市区选择器部分安卓手机兼容的问题:无法只选省份,必须选择到市
代码片段: 1 <view class="item"> 2 <view class="i-name"><text class=&q ...
- nginx: the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf
Nginx如果未开启SSL模块,配置Https时将提示如题错误 原因:nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现 ...
- 淘淘商城项目技术点-9:使用FTPClient及FtpUtil工具类将图片上传至ngnix图片服务器
package com.taotao.controller; import com.taotao.common.utils.FtpUtil; import org.apache.commons.net ...
- ubuntu20.04系统openjdk11变更openjdk-8-jdk
ubuntu20.04系统openjdk11变更openjdk-8-jdk一.卸载openjdk11先检查是否安装,命令:dpkg --list | grep -i jdk移除openjdk包,命令: ...
- Dinic的几种复杂度
学了那么久网络流才发现自己不知道 Dinic 算法的一个在各边容量均为 \(1\) 的网络时复杂度上的结论.我说为啥学术社区那题优化建图复杂度是对的呢-- 以下均认为使用了当前弧优化与多路增广. 以下 ...
- 函数调用_通过apply和call方法调用
不同类型函数调用之间的主要区别在于:最终作为函数上下文(可以通过this参数隐式引用到)传递给执行函数对象不同.对于方法而言,即为所在的对象:对于函数而言是window或是undefined(取决于是 ...
- python打开Excel中指定的sheet表
一个Excel中有多个sheet的时候,你在第几个sheet保存关闭的,那下次打开就在原来的那个表的位置,所以有时候你想--在打开一个Excel的时候指定到其中的一个sheet表,那么使用第三方库xl ...