【jmeter】jmeter的线程组功能的详细介绍
初衷
之前在公司做的性能测试基本上都是关于数据库的,针对接口的性能测试还是比较少一点。考虑到后边大模型问答产品的推广,公司方面也要求对相关接口进行压测,也趁着这个机会,对jmeter进行深入研究,进一步加强自己性能测试方面的专业知识。
我希望能够结合自己的实际经历与心路历程,包括踩过的坑,一并与大家进行分享,共同提高自己的技术。
在这个系列里面,我也会逐步记录自己成长的历程
Jmeter介绍
以这个接口为例:

线程组(Thread Group)概述
线程组是 JMeter 中最基本的元素,用于控制模拟用户的行为。可以把线程组看作是一群虚拟用户的集合,这些虚拟用户将按照设定的规则来执行测试计划。例如,在测试一个 Web 应用时,线程组中的每个线程就代表一个虚拟用户,这些用户会并发地访问应用的各种接口。
线程数(Number of Threads)
- 含义:
线程数表示同时执行测试任务的虚拟用户数量。例如,将线程数设置为 100,就相当于有 100 个虚拟用户同时对目标系统进行操作。这个参数直接决定了压测的并发程度。 - 应用场景和影响:
在测试一个小型的企业内部系统接口时,如果预计同时使用该接口的用户不超过 50 人,那么可以将线程数设置为 50 来模拟实际的使用场景,观察系统在这种负载下的响应情况。如果线程数设置过高,比如对于一个性能较差的系统设置了过多的线程数,可能会导致系统崩溃或者响应时间过长,因为系统无法承受这么多并发请求。
Ramp - Up Period(in seconds)
- 含义:
它表示所有线程在多长时间内全部启动完成。例如,设置线程数为 100,Ramp - Up Period 为 10 秒,那么 JMeter 会在 10 秒内逐步启动这 100 个线程,平均每秒启动 10 个线程。 - 应用场景和影响:
当测试一个新开发的系统时,如果想慢慢增加负载来观察系统在不同负载阶段的性能变化,可以适当设置较长的 Ramp - Up Period。这样可以更细致地了解系统从低负载到高负载过程中的性能瓶颈。如果 Ramp - Up Period 设置得过短,可能会导致系统瞬间承受较大的压力,出现异常情况,无法准确评估系统在逐渐增加负载过程中的性能。
循环次数(Loop Count)
- 含义:
循环次数决定了每个线程执行测试任务的次数。例如,设置循环次数为 5,表示每个虚拟用户(线程)会重复执行测试计划 5 次。如果设置为 “永远(Forever)”,则线程会一直循环执行测试任务,直到手动停止压测。 - 应用场景和影响:
在测试一个具有缓存机制的系统时,如果想观察缓存对系统性能的影响,可以通过设置不同的循环次数来实现。比如,先设置较低的循环次数,让系统有机会缓存部分数据,然后再设置较高的循环次数,观察缓存是否能够有效降低系统的响应时间。循环次数设置的多少直接影响了总的请求数量和测试的持续时间。
调度器(Scheduler)概述
- 在 JMeter 中,调度器是用于更精细地控制线程执行时间和执行策略的工具。它允许用户根据特定的时间要求和测试场景来安排线程的启动、停止以及执行的节奏。
调度器、线程数、Ramp-Up Period、循环次数的联系
与线程数的联系
- 负载控制:
线程数确定了总的模拟用户数量,而调度器可以决定这些用户在什么时间范围内参与测试。例如,当设置了较高的线程数(如 1000 个线程),如果希望这些用户在特定的时间段(如工作时间 9:00 - 17:00)内进行测试,可以通过调度器来实现。调度器可以设置测试的开始时间和结束时间,从而在这个时间窗口内按照线程数所确定的负载规模对目标系统进行压测。 - 动态调整负载:
在某些复杂的测试场景中,可能需要根据系统的响应情况动态调整负载。例如,在测试一个自适应负载均衡的系统时,开始时可以通过调度器设置较低的线程数(如 100 个线程)来观察系统的基本性能。随着测试的进行,如果系统性能表现良好,可以通过调度器在后续阶段增加线程数(如增加到 500 个线程),以进一步测试系统的负载承受能力。
与 Ramp - Up Period 的联系
- 负载增长节奏控制:
Ramp - Up Period 规定了线程启动的速度,调度器与之相结合可以更灵活地控制负载增长的节奏。例如,在一个分布式系统的性能测试中,调度器可以设置在系统负载较低的夜间时段开始测试,并且通过 Ramp - Up Period 参数控制线程的缓慢启动。如果 Ramp - Up Period 设置为 60 秒,调度器可以确保在这个规定的时间内,按照设定的速度逐步增加线程,使得系统能够平稳地从低负载状态过渡到高负载状态,避免系统因为突然的高负载而出现异常。 - 时间依赖的负载增长:
调度器可以使 Ramp - Up Period 具有时间依赖性。比如,在模拟一个电商平台的促销活动场景时,根据活动开始时间(由调度器控制),可以设置在活动开始后的前 5 分钟内完成所有线程的启动(通过 Ramp - Up Period 来设置具体的启动时间),这样就可以模拟出促销活动开始时用户流量逐渐增加的实际情况。
与循环次数的联系
- 测试持续时间和负载模式:
循环次数决定了每个线程执行测试任务的重复次数,调度器可以根据时间来限制这种重复。例如,设置循环次数为 “永远(Forever)”,但通过调度器可以将测试限制在一个特定的时间范围内(如 2 小时)。这样,在这 2 小时内,线程会按照循环次数的设定不断执行测试任务,而一旦超过这个时间,测试就会停止。这对于模拟长时间运行的系统或者进行长时间稳定性测试非常有用。 - 阶段性测试策略:
调度器可以结合循环次数来实现阶段性的测试策略。比如,在测试一个具有多种功能模块的系统时,调度器可以先安排一个阶段,在这个阶段中设置较低的循环次数,让线程重点测试系统的某个核心功能模块。然后,通过调度器切换到下一个阶段,增加循环次数,使线程对系统的其他功能模块进行更深入的测试。这种方式可以更有针对性地利用循环次数来进行全面的系统性能测试。
相关文章:
【jmeter】jmeter的线程组功能的详细介绍
初衷 之前在公司做的性能测试基本上都是关于数据库的,针对接口的性能测试还是比较少一点。考虑到后边大模型问答产品的推广,公司方面也要求对相关接口进行压测,也趁着这个机会,对jmeter进行深入研究,进一步加强自己性…...
高边坡安全监测系统的工作原理和应用领域
高边坡安全监测系统的工作原理主要依赖于各种先进的传感器设备,这些传感器能够实时地捕捉和记录边坡的位移、应力、裂缝、倾斜和沉降等多种关键数据。这些数据的采集是通过高精度的监测设备进行的,确保了数据的准确性和可靠性。采集到的数据随后通过高效…...
Java:多态的调用
1.什么是多态 允许不同类的对象对同一消息做不同的响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)。多态使用了一种动态绑定(dynamic binding)技术,指在执行期间判断所引用…...
A day a tweet(seventeen)——Visualize Convolution Neural Network!
a.形象化地CNNs visually explained! . .CNN(Convolution Neural Network) 卷积神经网络 a.不可思议的,难以置信的 v.使形象化CNN explainer is an incredible interactive tool to visualize the internal workings of a CNN. n.解释器;讲解员 …...
卡达掐发展史
自行车是一种简单而又伟大的交通工具。自从19世纪诞生以来,它不仅改变了人们的出行方式,也深刻地影响了我们的生活方式、城市布局以及健康观念。作为一种绿色、经济的出行工具,自行车至今仍在全球范围内被广泛使用。本文将从自行车的历史、结…...
UI界面设计入门:打造卓越用户体验
互联网的迅猛发展催生了众多相关职业,其中UI界面设计师成为互联网行业的关键角色之一。UI界面设计无处不在,影响着网站、应用程序以及其他数字平台上的按钮、菜单布局、色彩搭配和字体排版等。UI设计不仅仅是字体、色彩和导航栏的组合,它的意…...
【Linux:tcp三次握手和四次挥手】
目录 三次握手: 两次握手 丢包问题与乱序问题 四次挥手 为什么客户端需要等待超时时间? TCP报文中含有SYN、ACK、FIN等标识,把这些标识设置1就是开启这些标识,设置为0就是关掉这些标识 三次握手: 在客户端发送tc…...
大数据Informatica面试题及参考答案
目录 什么是 Informatica?它主要解决什么问题? 什么是 Informatica PowerCenter? Informatica PowerCenter 的主要组成部分有哪些? 解释 Informatica PowerCenter 的主要组件。 Informatica PowerCenter 与 DataStage 有何区别? 解释 Informatica 中的源 (Source) 和…...
Gradient Boosting Regressor(GBDT)--- 论文实战
一、前言 在《机器学习论文复现实战---linear regression》中通过Pearson 相关性分析,去除了2个高相关性特征 "PN" 和 "AN" ,数据维度变为890*25。(数据集地址) 这里我们不做任何前期处理,直接就将数据放入 GBDT 模型中进行训练了。 二、模型训练过程…...
Python教程:python枚举类定义和使用
在Python中,枚举类(Enum)用于表示一组常量,使代码更加清晰和易于维护。枚举类通过enum模块定义。以下是如何定义和使用枚举类的详细步骤。 定义枚举类 首先,你需要导入enum模块,然后定义一个枚举类。枚举…...
Java学习Day60:微服务总结!(有经处无火,无火处无经)
1、技术版本 jdk:17及以上 -如果JDK8 springboot:3.1及其以上 -版本2.x springFramWork:6.0及其以上 -版本5.x springCloud:2022.0.5 -版本格林威治或者休斯顿 2、模拟springcloud 父模块指定父pom <parent><…...
MySQL日期类型选择建议
我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间、用户下单时间等等。你会发现时间这个东西与我们开发的联系还是非常紧密的,用的好与不好会给我们的业务甚至功能带来很大的影响。所以…...
70B的模型做微调,使用A10*8的卡能够使用
使用 8 张 A10 GPU(每张 A10 GPU 大约有 24 GB 的显存)来微调 70B 参数的模型会比较困难,主要原因是显存不足。像 70B 参数量级的模型(如 LLaMA-2 70B、BLOOM-176B)通常需要几百 GB 以上的显存,仅加载模型就…...
将vscode的终端改为cygwin terminal
现在终端是默认的power shell,没有显示cygwin 接下来选择默认配置文件 找到cygwin的选项即可 然后提示可能不安全什么的,点是,就有了...
《ASP.Net Core技术内幕与项目实战》读书笔记_1
ch1 .NET Core入门 .NET介绍 这一章主要说的是.Net Core、.Net Framework、.Net Stanard三个之间的关系。通俗来讲就是Core是新出的、能跨平台,Framwork是老版的、不能跨平台,Standard是为了在Framework、Core、Xamarin中统一库的使用而定制的规范&#…...
【青牛科技】应用方案|D2587A高压大电流DC-DC
1、概述 D2587A稳压器是专为反激式、升压和正向转换器应用而设计的单片集成电路。该器件提供四种不同的输出电压版本:3.3V、5V、12V 和可调节电压。这些稳压器需要的外部元器件很少,因此具有成本效益,并且易于使用。该电源开关是一款5A NPN器…...
【测试】【Debug】pytest运行后print没有输出
import pytest def test_good():for i in range(1000):print(i)def test_bad():print(this should fail!)assert False比如上述程序,运行之后只能看到输出了’this should fail!;但是debug版的测试运行后又能看到test_good函数中的输出。 这是为什么呢&a…...
linux strace 查看程序异常问题总结
1,死锁问题 #include <stdio.h> #include <pthread.h> #include <unistd.h>pthread_mutex_t lock1 PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t lock2 PTHREAD_MUTEX_INITIALIZER;void* thread_func1(void* arg) {pthread_mutex_lock(&lo…...
8086汇编常见寄存器与指令
本文为学习书籍《汇编语言(第4版)》后的小结。 1、寄存器 序号寄存器描述1ax运算寄存器2bx地址寄存器,偏移地址3cx计数寄存器,loop的结束条件,jcxz的跳转条件4dx运算寄存器5cs段地址,指令执行段地址6ss段地址,栈的段地…...
Group By、Having用法总结(常见踩雷点总结—SQL)
Group By、Having用法总结 目录 Group By、Having用法总结一、 GROUP BY 用法二、 HAVING 用法三、 GROUP BY 和 HAVING 的常见踩雷点3.1 GROUP BY 选择的列必须出现在 SELECT 中(🤣最重要的一点)3.2 HAVING 与 WHERE 的区别3.3 GROUP BY 可以…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...
基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
