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//&符号变量 就可以获取这个变量内存的地…

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

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 从物理与…

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

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

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…

类的成员之三:构造器(Constructor)

类的成员之一:成员变量 (field) 类的成员之二:方法 (method) 我们 new 完对象时,所有成员变量都是默认值,如果我们需要赋别的值,需要挨个为它们再赋值,太麻 烦了。我们能不能在new 对象时,直接…

MySql实战--全局锁和表锁 :给表加个字段怎么有这么多阻碍

今天我要跟你聊聊MySQL的锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,MySQL里面的锁大致可以分成…

三元组数据模型:构建知识图谱的基石

目录 前言1. 三元组数据模型概述1.1 定义与结构1.2 特点 2. 三元组在知识图谱中的应用2.1 知识表示2.2 知识推理2.3 数据整合 3 三元组的数据格式3.1 N-Triples :3.2 RDF/XML :3.3 Turtle (又称为 Terse RDF Triple Language)&…

一、JAVA集成海康SDK

JAVA集成海康SDK 文章目录 JAVA集成海康SDK前言一、项目依赖 jar1. examples.jar2. 项目依赖 jna.jar,可以通过 maven依赖到。二、集成SDK1.HcNetSdkUtil 海康 SDK封装类2.HCNetSDK3.Linux系统集成SDK三、总结前言 提示:首先去海康官网下载 https://open.hikvision.com/dow…

Flink-CDC 无法增量抽取SQLServer数据

1.问题 因部署在WindowsServer服务器SQLServer发生过期后重启,Flink-CDC同步进行作业重启,启动后无报错信息,数据正常抽取。但是观察几天后发现当天数据计算指标无法展示 2.定位 因为没用进行任何修改,故初步判断不是因Flink-C…

多线程的学习1

多线程 线程是操作系统能够进入运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 进程:是程序的基本执行实体。 并发:在同一个时刻,有多个指令在单个CPU上交替执行。 并行:在同一时刻&#xff0c…