JMeter线程组编辑区揭秘
线程组编辑区如下:
有点复杂,但是慢慢看下来,还是比较容易理解。
Name
带有业务含义的名字。
Comments
线程组的备注说明。
Action to be taken after a Sampler error
取样器报错后执行动作。有5个选项:Continue,Start Next Thread Loop,Stop Thread,Stop Test,Stop Test Now。为了搞懂这几个选项,我画了张时序图进行说明:
- 图中有一个线程,在最左边。
- 右边有两个迭代:迭代1和迭代2。
- 每个迭代有两个请求,第一个请求失败。
- Stop Thread是直接结束线程,没有画出来,一般不会设置此项,不然会导致运行线程越来越少,最后负载不够,对服务器的压力不够,测试结果不具参考性。
- 剩余4个选项用红色字体标注了出来。
线程在第一个迭代的第一个请求失败了。Continue表示继续执行第二个请求,再执行第二个迭代;Start Next Thread Loop表示忽略第二个请求,跳到第二个迭代执行;Stop Test表示把当前迭代的第二个请求执行完后,停止测试;Stop Test Now表示从第一个请求失败这里直接结束测试。
JMeter默认选项是Continue,保证足够的并发压力。我们在大量用户并发时,服务器偶尔响应错误是正常现象,比如服务器由于性能问题500,此时出错我们正好要记录下来,作为有性能问题的依据。
如果想减少关联请求报错,可以选择Start Next Thread Loop。
Thread Properties
Number of Threads (users)
线程组的线程数量。
Ramp-up period (seconds)
启动时间,线程组在多少秒内启动完所有线程。
比如设置线程数为50,设置启动时间为10秒,那么每秒就会启动50 / 10 = 5个线程;如果设置为0秒,则50个线程会立刻启动;如果设置为100秒,就会每隔100 / 50 = 2秒启动1个线程。
Ramp-up period如何设置?
以下是5个线程依次从启动到执行到退出的示意图:
JMeter线程组产生的并发压力,实际上是红色框起来的那部分,在这个时间段才是所有线程在并发着运行。
先从Ramp-up period设置最小和最大来分析这个问题:
- 假设有3000个线程,只迭代1次,如果设置为0秒,那么测试一开始就会产生3000个并发请求,说不定直接把服务器压崩了,还没开始就结束了。
- 假设有10个线程,只迭代1次,如果设置为100秒,那么每隔10秒启动1个线程,很可能前一个线程跑完了,下一个线程还没启起来,某一时刻最多只有1个线程在跑,没有并发压力。
接着看看该设置成多少?这个答案我找了很多资料,都没有明确的说法。结合实践经验来谈的话,既不能太小,也不能太大,可以根据业务场景、硬件配置、系统资源来进行设置。
Loop Count
迭代次数。
- 填写数字,指定迭代次数。
- 勾选Infinite,无限迭代,一直运行到测试停止或异常崩溃。
Same user on each iteration
每个迭代都用相同的user(线程)。
默认这个选项是勾选的。因为销毁和创建线程本身就会占用资源,可能会影响性能测试结果。
什么时候去掉勾选呢?比如登录,加了HTTP Cookie管理器以后,单个线程多次迭代(注意不是多个线程哦)登录用的都是相同的Cookie。去掉勾选后,同时在HTTP Cookie管理器选择清除旧Cookie:
那么每次迭代就能用不同Cookie了。
Delay Thread creation until needed
保持默认就好。跟JVM创建线程时机有关,实际运用勾不勾选都不影响测试结果。
Specify Thread lifetime
Duration
持续时间,单位秒。
前面的Loop Count勾选了Infinite,Duration才会生效。
Startup delay
启动延迟,单位秒。
延迟到多少秒后再启动线程。
小结
本文对线程组编辑区进行了揭秘,看似复杂,实则简单,问题在于实际使用过程中如何结合业务来设置,这需要实践经验不断积累才能找到答案。需要注意的是,如果Ramp-up period设置不当,有可能100个线程只能产生1个并发请求。
参考资料:
《全栈性能测试修炼宝典JMeter实战》
JMeter线程组编辑区揭秘的更多相关文章
- 【转】关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念 笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!,望大家 ...
- 关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念 笔者是个刚刚踏入压力测试领域不到2个月的小菜,这里分享一下线程组中3个参数之间关系的个人见解,不喜请!喷!,望大家 ...
- jmeter线程组之间传递参数
JMeter 变量作用域局限于所属线程.这样设计是经过深思熟虑的,目的是让测试线程能够独立运转.有时候用户可能需要在不同线程间(可能属于同一个线程组,也可能不属于同一个线程组)传递变量. 其中一种方法 ...
- 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中的测试计划是一直有的,但可以在右侧修改名字,要开始做具体测试设计前,都需要在测试计划下边添加一个线程组,添加路径为鼠标捕获测试计划后,点击鼠标右键->添加->Threads( ...
- Jmeter线程组间传递参数
现在做测试和以前不太一样了,以前只要站在一个用户的角度做端到端的UI测试就可以了,现在不会做接口测试,出去都不好意思和别人打招呼.那提到接口测试,就不得不提一下接口测试利器Jmeter,大家也都知道, ...
- jmeter线程组基本设置
线程组基本设置 在线程组界面中可以设置以下数据,进行控制线程组: 1.取样器错误后要执行的动作: 继续:忽略错误,继续执行 Start Next Thread Loop: 忽略错误,线程当前循环终止, ...
随机推荐
- A study on ILC for linear discrete systems with single delay
论文题目就是随笔的题目,以后的随笔的命名都是如此,特此说明. 论文的主要内容是偏理论研究的,引入了离散矩阵延迟指数函数,来处理具有单时滞线性离散系统.对于离散延迟矩阵指数函数其定义为: \[e_{m} ...
- XXL-JOB v2.3.0 发布 | 易用性增强
转: XXL-JOB v2.3.0 发布 | 易用性增强 v2.3.0 Release Notes 1.[新增]调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略.立即补偿触发一次等: 2. ...
- Mac忘记密码
1.启动电脑的时候,按住 Command+R,直到苹果的图标出现,松开,等待进入... 2.直接点击菜单栏上有个功能里面有 "终端" 功能,点击打开. 3.在终端页面里输入---& ...
- Linux常用操作命令之文件权限(二)
一.基本概念 Linux/Unix是多用户系统:root是超级用户,拥有最高权限,其他用户及权限由root管理.文件/目录的权限有三种,可读read(r)可写write(w)可执行excute(x). ...
- MySql_176. 第二高的薪水 + limit + distinct + null
MySql_176. 第二高的薪水 LeetCode_MySql_176 题目描述 题解分析 代码实现 # Write your MySQL query statement below select( ...
- Java 多线程 02
多线程·线程间通信 和 GUI 单例设计模式 * A:单例设计模式 * 保证类在内存中只有一个对象 * B:如何保证 * a:控制类的创建,不让其他类来创建泵类的对象,私有化构造方法 * b:在本类中 ...
- cve-2019-2725 反序列化远程代码执行
描述:部分版本WebLogic中默认包含的wls9_async_response包,为WebLogic Server提供异步通讯服务.由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心 ...
- P2424 约数和 【整除分块】
一.题目 P2424 约数和 二.分析 因为都是加法,那么肯定有的一个性质,即前缀和的思想,就是$$ { ans =\sum_{i=1}^y f(i)} - {\sum_{i=1}^x f(i)} ...
- Html5分页显示Table
Html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <met ...
- concurrentHashMap扩容相关方法详解
上一个博客中说到了concurrentHashMap的put操作,在put操作之后如果添加了节点,我们首先会把全局的节点数+1,如果满足了扩容条件,我们则进行扩容 我们先从addCount方法说起 / ...