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参数,这个参数 ...
随机推荐
- 使用Github或Gitlab的Webhooks实现代码自动更新部署(Ubuntu20.04)
1.安装ssh服务root@Ubuntu:~# apt-get install openssh-server 2.部署phproot@Ubuntu:~# add-apt-repository ppa: ...
- h5py学习(一)核心概念
因pandas的to_hdf5函数有bug TypeError: object of type 'int' has no len(),写dataframe数据出现了报错,遂决定直接使用h5py来写数据 ...
- SQL自动生成表结构Excel说明文档
针对已经存在表结构,快速生成整理表结构文档. SELECT字段中文名 = isnull(G.[value],''),字段名 = A.name,类型 = B.name,标识 = Case When CO ...
- java基于ssm开发的宠物商城宠物店源码
简介 关于宠物的商店,首页,搜索商品,详情页,可选择尺寸,衣服颜色,根据不同规格显示不同的商品价格,加入购物车,立即购买,评价列表展示,商品详情展示,商品评分,分类商品,标签查询,更多分类查询 演示视 ...
- HTML学习笔记3----制作一个简易网站
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- OCR开源项目
转发自https://www.toutiao.com/a6802032805313249806/?tt_from=weixin&utm_campaign=client_share&wx ...
- springboot+mybais配置多数据源(分包实现)
一.分包方式实现: 1.在application.properties中配置两个数据库: #druid连接池 #dataSoureOne(这里是我本地的数据源) spring.datasource.o ...
- Python中的容器、迭代器、生成器
容器是一系列元素的集合,str.list.set.dict.file.sockets对象都可以看作是容器,容器都可以被迭代(用在for,while等语句中),因此他们被称为可迭代对象. 可迭代对象实现 ...
- SAP 自建事务码
自建事务码的 事务码 se93 一般来说开发人员会遇到,开发了报表已经一些功能,不会让业务人员通过se38来进行使用,一般会新建一个事务码让业务人员在t-code中的使用 配置对应的程序即可
- Java数组之数组的使用
数组的使用 普通的for循环 For-Each循环 数组作方法入参 数组作返回值 public class ArrayDemo03 { public static void main(String[] ...