Jmeter 配置说明之线程组

一、线程组介绍:

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

通俗理解:

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

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

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

对应关系:

例如: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.mzph.cn/news/779249.shtml

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

相关文章

vue3.0 + ts + eslint报错:error Parsing error: ‘>‘ expected

eslint报错 这里加上对应的 eslint配置即可: parser: vue-eslint-parser, parserOptions: {parser: "typescript-eslint/parser",ecmaVersion: 2020,sourceType: module, }具体如下: module.exports {parser: vue-eslint-parser,parserOpti…

企业数据定制:营销/画像/大数据模型

随着信息技术的发展,数据已经成为企业发展的重要基石。现在信息广泛地分布在网络,人工收集对于企业运作来说效率太低了。 因此,很多企业选择将数据采集工作交给专业的团队来做,选择直接外包或者购买数据。 不管是哪种情况&#…

​马来语翻译中文去哪比较好?

据了解,马来语是马来西亚、文莱的官方语言,也是新加坡的官方语言之一,马来语跟印尼语是同一种语言,它在整个东南亚有着极大的影响力。如今在国内市场上,马来语翻译的需求也是供不应求,那么,如何…

【Go】三、Go指针

文章目录 1、指针2、说明 1、指针 &符号变量 就可以获取这个变量内存的地址*int 是一个指针类型 (可以理解为 指向int类型的指针) package main import("fmt" ) func main(){var age int 18//&符号变量 就可以获取这个变量内存的地…

ubuntu22 安装docker26

ubuntu22 安装docker 在Ubuntu 22.04上安装Docker,你可以按照以下步骤操作: 1.更新软件包索引: sudo apt-get update 2.安装必要的软件包,以允许apt通过HTTPS来使用仓库: sudo apt-get install ca-certificates c…

Flowable 笔记

目录 FlowableFlowable简介Flowable 的四大引擎Flowable BPMN 业务流程引擎Flowable DMN 决策引擎Flowable CMMN 案例模型引擎Flowable Form 表单引擎 Spring Boot集成Flowable Flowable Flowable简介 Flowable 是一个使用 Java 编写的轻量级业务流程引擎,使用 Ap…

第十五章 Nginx

一、Nginx 1.1 Nginx 相关概念 1.1.1 正向代理 正向代理类似一个跳板机,代理访问外部资源。 比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌&am…

TBSI模型论文解读及代码分析

前往我的主页以获得更好的阅读体验 简介 论文来源: Bridging Search Region Interaction With Template for RGB-T Tracking 现有的搜索算法通常会直接连接 RGB 和 T 模态搜索区域, 该方法存在大量冗余背景噪声. 而另一些方法从搜索帧中采样候选框, 对孤立的 RGB 框和 T 框进…

TongWeb7.0-8.0Java代码使用JMX获取应用通道端口

以下通过java代码实现获取TongWeb7.0/8.0应用通道端口使用到的JMX均为TongWeb自带的JMX功能。 一、TongWeb7.0 1、使用本地JMX获取应用通道端口 public String getTw7PortByLocalJmx() { try { MBeanServer beanServer ManagementFactory.getPlatformMBeanServer(); Set&l…

SOLIDWORKS二次开发参数化设计软件 慧德敏学

SOLIDWORKS参数化设计软件-SolidKits.AutoWorks专为规格变化多、变化规律强的产品开发,将变化规律集成到三维设计软件,通过一键点击实现自动化产品再设计,如智能选型、自动化修改产品属性、产品参数、产品状态、图纸更新、重命名、并自动打包…

计算机填空知识点(2)续20个

21.Windows的操作以 鼠标 操作为主,也可以使用 键盘 操作。 22.Windows的窗口可分为 应用程序窗口 、文档窗口和 对话框窗口 三类。 23. Windows 提供了三种菜单形式:一种是 窗口菜单 ,另一种是位于任务栏…

LeetCode:300最长递增子序列 C语言

300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子…

小程序中使用less

在vscode中安装插件 找到左下角齿轮的设置,点击右边图标,进入“settings.json” 加上以下代码配置 "less.compile":{"outExt": ".wxss"}

Mysql数据库:日志管理、备份与恢复

目录 前言 一、MySQL日志管理 1、存放日志和数据文件的目录 2、日志的分类 2.1 错误日志 2.2 通用查询日志 2.3 二进制日志 2.4 慢查询日志 2.5 中继日志 3、日志综合配置 4、查询日志是否开启 二、数据备份概述 1、数据备份的重要性 2、备份类型 2.1 从物理与…

Promise封装ajax

Promise封装原生ajax 1.node的内置模块url, http 2.Promise封装原生ajax 01-node的内置模块 # url: 操作网址 let url require(url) url.parse(网址, [布尔值: 决定是否将查询字符串转换为对象格式]): 将网址解析成对象# http: 创建本地服务器 let http requi…

大数据学习-2024/3/28-xls转csv文件、csv文件转xls文件

九九乘法表写入到d.xls文件中 1.导入模块 import xlwt2.创建工作薄对象 bookxlwt.Workbook()3.根据book对象创建sheet标签页对象 sheetbook.add_sheet(jj)4.写入内容 # 外层循环:控制乘法口诀表的行数 # range(1, 10) 生成一个从1到9的整数序列,共…

镜舟普元揭秘数据中台新范式,引领企业数智化转型与创新实践

在当前数字化浪潮中,数据中台的角色越发重要,承担着将一切业务数据化的重任。近日,北京镜舟科技有限公司(简称“镜舟”)与普元信息技术股份有限公司(简称“普元”)联合举办“数据中台新范式”云…

matplotlib 绘图

matplotlib 绘图 方便设置legend图例的位置 ax1.legend(loc‘upper center’, bbox_to_anchor(0.3, -0.1)) ax2.legend(loc‘upper center’, bbox_to_anchor(0.6, -0.1)) import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm from scipy.inter…

【SpringCloud】Ribbon负载均衡

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 文章目录 …

解决Chrome浏览器打开flags页面时出现黑屏问题的方法

当我们在使用Chrome浏览器并尝试访问flags页面时,遇到屏幕短暂闪烁或变黑的情况,这可能与启用的硬件加速功能有关。硬件加速是Chrome浏览器的一个功能,旨在利用计算设备的GPU来提高视频播放和图形渲染的性能。然而,在某些情况下&a…