【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 可以…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...