Jmeter 配置说明之线程组

news2024/11/29 2:41:42

一、线程组介绍:

线程组元件是任何一个测试计划的开始点。在一个测试计划中的所有元件都必须在某个线程组下。所有的任务都是基于线程组:

通俗理解:

· 线程组:就是一个线程组,里面有若干个请求;

· 线程:一个线程就是一个“虚拟用户”;

· 请求:一个线程组里面有若干个请求。

对应关系:

例如:1个线程组里面有10个请求,线程数为10个,跑完后得到:

理解为:(10个线程数)10个人,每个人都要跑这10个请求,所以:10*10=100:

并发数:100;线程数:10;

PS:线程组也可以看作是一个虚拟用户组。线程组中的每一个线程都可以理解为一个虚拟用户。

二、线程组设置:


我们把线程组的设置分成3个区域:

区域一:采样器失败后处理:

参数解释:

1、continue(继续):继续执行接下来的操作;

2、Start Next Thread Loop(启动下一进程循环):开始下一次循环;

3、stop Thread(停止线程):停止线程,退出该线程(不再执行此线程的操作);

4、stop Test(停止测试):等待当前执行的采样器结束后,结束整个测试;

5、Stop Test Now(立即停止测试):马上停止测试;

区域二:线程属性:

参数解释:

1、Number of Threads(users)(线程数):相当于模拟的用户数量;

2、Ramp-up Period(in seconds):达到指定线程需要的时间,例如线程数为10,时间设定为5s,那么就是5s加载 10个线程,每秒启动的线程数=10/5=2;

3、Loop Count(循环次数):如果填具体的数值,就是循环对应的次数;如果选择“Forever”,则一直执行下去,直到手动停止;

4、Delay Thread creation until needed:延迟线程创建,直到需要才创建。

区域三:调度器配置:


需要选中调度器(scheduler),调度器配置才生效。

参数解释:

1、Duration(持续时间):设置测试计划的执行时间,单位是秒。

2、Startup delay(启动延迟):设置测试计划的启动延迟时间,以确保测试计划在指定的开始时间开始执行。

注意:

1、注意:调度器一般在循环次数为“永远”时配合使用,否则会按照具体的循环次数执行。

2、JMeter调度器只适用于JMeter的GUI模式(即通过JMeter界面直接执行脚本),不适用于CLI模式(即进入到Jmeter的bin目录下通过命令执行测试脚本)。

3、在CLI模式下,需要使用其他的方式来控制测试计划的执行时间和频率,例如使用脚本语言编写定时执行脚本来实现。

三、各类型线程组:


1、原生线程组:

(1)thread group(线程组):

这个就是我们通常添加运行的线程。通俗来讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。上文所介绍使用的例子就是此线程组。

(2)setup thread group(前置线程组):

一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行;类似LoadRunner的init,测试开始时进行初始化的工作。

不同的是执行顺序---它会在普通线程组执行之前被触发。

应用场景举例:

A、测试数据库操作功能时,用于执行打开数据库连接的操作。

B、测试用户购物功能时,用于执行用户的注册、登录等操作。

(3)teardown thread group(拆线组):

一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组;类似LoadRunnner的end,测试结束时进行回收工作。

不同的是执行顺序---它会在普通线程组执行之后被触发。

应用场景举例:

A、测试数据库操作功能时,用于执行关闭数据库连接的操作。

B、测试用户购物功能时,用于执行用户的退出等操作。

2、可拓展线程组

(1)Concurrency Thread Group(递增式并发线程组)

这意味着:

5秒除以5步,每步1秒;100个用户除以5步,每步20个用户;每1秒将添加20个用户,直到达到100个用户,达到100个线程后,所有这些线程将继续运行,并一起打到服务器10秒钟;

注意:这个可以模仿递增式并发(只能递增不能递减),并可设置递增次数、递增时长、到达目标递增数量保持时长等等:

参数解释:

· Target Concurrency:目标并发(总线程数)

· Ramp Up Time:加速时间(总加速时长)

· Ramp-Up Steps Count:加速步骤计数(总加速/递增次数)

· Hold Target Rate Time:保持目标速率时间(到达总线程数后持续时长)

· Time Unit:时间单位(分钟或者秒)

· Thread Iterations Limit:线程迭代次数限制(循环次数)

· Log Threads Status into File:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件);

(2)Stepping Thread Group(逐步线程组)


这个可以模仿递增式并发(不但递增还可以递减),并可设置递增次数、递增启动延迟、递增时长、到达目标递增数量保持时长等等:

参数解释:

1、This group will start () threads:线程组能达到的总线程数;

2、First wait for () seconds:首次加载线程前需要等待的时间;

3、Then start () threads:首次加载线程数;

4、Next add () threads every () seconds:每隔多少秒加载多少个线程

5、Using ramp-up () seconds:在几秒内启动线程组

6、Then hold load for () seconds:持续压测时间

7、Finally stop () threads every () seconds:每隔多少秒退出多少个线程

(3)bzm - Arrivals Thread Group(bzm-到达线程组)

所以以上设置就等于:3min除以5步,等于每步加速后持续0.6分钟,100个用户除以5步,等于每步加速20个用户,达到100个用户后持续跑6mn。

参数解释:

1、Target Rate:目标线程数(总线程数)

2、 Ramp Up Time:所需多少加载时间(总加速时长)

3、 Ramp Up Steps Count:所需多少个加载梯次(总递增/加速次数)

4、Hold Target Rate Time:持续运行时间(到达总线程数后持续时长)

5、Time Unit:可以选择用分钟还是秒来做单位

6、Thread lterations Limit:线程迭代次数限制。如果我们只需要运行每个用户一次以模拟用户的实际行为,则可能会很有用。在我们的例子中,该字段为空,因此每个用户将运行不确定的迭代,直到调度结束。

7、Log Thread Status into File:将线程状态记录到文件中

8、Concurrency Limit:最大并发数限制。以避免出现内存不足的问题。在我们的例子中是1000,这是一个很大的数字。

(4)Ultimate Thread Group(最终线程组)

参数解释:

1、Start Threads Count:当前行线程组总数;

2、Initial Delay/sec:延时启动当前行的线程,单位:秒

3、Startup Time/sec:启动当前行所有线程达峰值所需时间,单位:秒

4、Hold Load For/sec:当前行线程达到峰值后的稳定加载时间,单位:秒

5、Shutdown Time:停止当前行所有线程所需时间,单位:秒

Ultimate Thread Group可以用于以下几个场景的测试:

1、创建线性负载

测试场景:60s内启动100个线程,持续运行60s,花10s的时间结束

2、创建阶梯负载

测试场景:测试100个用户,我们将逐步地将它们提升。我们将从25个用户开始在一定时间内保持一个负载,查看服务器如何处理它。之后我们会再加25个到50个再加25个到75个,最后加25个到100个用户。这种方法效果好得多,也更可靠

3、创建尖峰负载

测试场景:平时稳定用户数为500个,维持24小时,在8-9点时用户数飙升至1000个

4、创建波浪形负载

测试场景:比如12306抢票的时候,每次开放抢票时,有大量用户涌入,等到下次开放时,又有大量用户涌入,这个时候,就像波浪一样,不断敲击服务器,考验服务器的性能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1556316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZNC3罗德与施瓦茨ZNC3网络分析仪

181/2461/8938产品概述: 罗德与施瓦茨 ZNC3 网络分析仪的工作频率范围为 9 kHz 至 3 GHz,面向移动无线电和电子产品行业的应用。它具有双向测试装置,用于测量有源和无源 DUT 的所有四个 S 参数。此外,它还提供适合开发和生产中各…

SOC子模块---存储器

存储器子系统简介 多层存储结构概念 该结构的核心是解决容量,速度,价格之间的矛盾,建立其的一种多层次存储架构;在金字塔越顶部其容量越小,价格越昂贵,但是其速度越快; Cache的出现主要解决了cpu 与主存之间速度的差异; 主存和辅存的层次结构解决了计算机对大容量,…

生态鱼缸智能养殖,系统架构与框图

功能:自动投食(推拉式电磁铁),温度显示的改进(传感器已经有了),控制灯光(白天亮晚上灭),自动补养/水循环(水氧监测太贵了,根据水温&am…

学习笔记】java项目—苍穹外卖day05

文章目录 苍穹外卖-day05课程内容1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常用数据类型介绍…

containerd系统级学习大纲

文章目录 1 理解Containerd的背景和架构 📚1.1 历史背景 🕰️1.2 架构细节 🔧 2 设置开发环境 🛠️3 源码分析 🔍4 深入核心功能4.1 容器生命周期管理4.2 镜像管理4.3 网络管理4.4 存储与快照4.5 插件系统 5 贡献代码6…

2024/3/29打卡 填充——贪心

目录 题目 思路 代码 先来说下什么时候使用贪心和动态规划: 一个题目当寻找答案的过程中有大约 2的指数级( 2^n)个方案的时候,可以考虑用贪心和动态规划问题(其实,我现在还不知道什么时候用 dfs 和 动态…

投稿指南【NO.15】SCI期刊推荐

写在前面:SCI论文发表是我国高校机构与基地评估、成果评奖、项目立项、人才培养等方面的重要考核指标,更不要要说关系到我们个人的毕业、晋升和前途。SCI含金量之高,要是读研读博科研工作期间能发表,将对直博、找工作、国奖申请、…

node.js的常用命令

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

c++----list模拟实现

目录 1. list的基本介绍 2. list的基本使用 2.1 list的构造 用法示例 2.2 list迭代器 用法示例 2.3. list容量(capacity)与访问(access) 用法示例 2.4 list modifiers 用法示例 2.5 list的迭代器失效 3.list的模拟实现 3.1…

【PythonGIS】Python实现批量导出面矢量要素(单个多面矢量->多个单面矢量)

可怜的我周六还在工作,已经很久没更新过博客了,今天正好有空就和大家分享一下。今天给大家带来的是使用Python将包含多个面要素/线要素的矢量批量导出单个要素的矢量,即一个要素一个矢量文件。之前写过多个矢量文件合并成一个矢量文件的博文&…

【C++STL详解(二)】——string类模拟实现

目录 前言 一、接口总览 二、默认成员函数 1.构造函数 2.拷贝构造 写法一:传统写法 写法二:现代写法(复用构造函数) 3.赋值构造 写法一:传统写法 写法二:现代写法(复用拷贝构造) 4.析构函数 三、…

武汉星起航:引领跨境电商新纪元,助力卖家实现全球业务飞跃

在全球化的时代背景下,越来越多的中国卖家正选择跨境电商作为他们拓展国际市场的重要途径。然而,对于许多新手卖家而言,如何进入海外市场、如何运营店铺、如何推广产品,都是一道道难以逾越的难题。在这个关键时刻,武汉…

智慧公厕:改变城市生活的革命性基础设施

在现代城市的高品质生活要求背景下,公共厕所成为了不可或缺的基础设施。然而,传统的公厕在服务质量、管理效率方面存在一定的问题。为了提供更好的公厕服务,智慧公厕应运而生。通过智能化的管理模式,智慧公厕实现了公厕使用与管理…

【并发编程】线程的基础概念

一、基础概念 1.1 进程与线程A 什么是进程? 进程是指运行中的程序。 比如我们使用钉钉,浏览器,需要启动这个程序,操作系统会给这个程序分配一定的资源(占用内存资源)。 什么线程? 线程是CP…

【Java八股面试系列】数据库(总结市面所有数据库知识点)

文章目录 索引索引是什么聚簇&非聚簇索引索引的实现方式HashBTree(多路平衡二叉树)两种实现方式区别 引申红黑树红黑树和AVL树的区别最大堆和最小堆 索引的优劣优点劣势 索引的使用索引失效的时候 事务特性事务并发问题隔离级别 锁锁的分类行锁表锁意…

udpflood是一种什么攻击,如何防御?

一、定义 UDPFlood攻击是一种利用UDP协议进行的拒绝服务(DoS)攻击,攻击者通过发送大量的UDP数据包来占用目标系统的网络带宽和资源,从而使系统无法正常响应合法用户的请求。 二、攻击方式 1. UDP协议特点: UDP协议是一…

【详解】运算放大器工作原理及其在信号处理中的核心作用

什么是运算放大器 运算放大器(简称“运放”)是一种放大倍数非常高的电路单元。在实际电路中,它常常与反馈网络一起组成一定的功能模块。它是一种带有特殊耦合电路和反馈的放大器。输出信号可以是输入信号的加法、减法、微分和积分等数学运算…

最大连续子序列和求值

文章预览: 题目算法遍历枚举代码如下 优化版本代码如下 陈越姥姥题目代码 题目 最大连续子序列求和,什么是连续最大子序列,先简单来说一个数组int a[]{-9,1,-10,2,3,4,-2,5,6,-2,-3}; 那它的连续最大子序列是2,3,4,-2,5,6 是18,就…

首页HF粗排模型优化

[work rus_env]$ pwd /home/work/xx/du-rus/offline-tools/du_rus/rus_env [work rus_env]$ python buildenv_rus.py 5a0e771e938a486df3b8b3e1cde1a39c2006882d 5f3241963a3e39a8e1eae05d7075fc5b9278a7c7 打开日志级别 [workxx conf]$ vim /home/work/xx/du-rus/du_rus_…

线程中的核心操作

线程中的核心操作 1:start()2:中断(终止)一个线程2.1:自己定义线程结束的代码2.1.1 存在的问题 2.2:使用Thread提供的interrupt()方法和isInterrupted()2.2.1 继续执行2.2.2 立即结束2.2.3 打印异常信息,再立即结束2.2.1 继续执行 22三级目录 1:start() start() 真正的创建线程…