【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 可以…...

Redis持久化机制——针对实习面试
目录 Redis持久化机制Redis为什么要有持久化机制?Redis持久化方式有哪些?AOF持久化工作原理是什么?有什么优缺点?AOF持久化工作原理AOF的优点AOF的缺点 RDB持久化工作原理是什么?有什么优缺点?RDB持久化工作…...

Windows系统服务器怎么设置远程连接?详细步骤
一、什么是Windows远程桌面连接? Windows远程桌面(Remote Desktop)功能使用户能够通过网络连接到另一台Windows计算机,实现远程操作。远程桌面非常适合系统管理员、技术支持人员以及那些需要远程工作的人,它允许用户以图形界面的方式访问远程计算机&…...

【Rust设计模式之建造者模式】
Rust设计模式之建造者模式 什么是建造者模式 什么是建造者模式 即将结构体属性方法与构建解离,使用专门的builder进行建造,说白了就是new和其他的方法分开,集中处理更方便。 直接上代码: #[derive(Debug)] struct children {nam…...

2024中国移动(南京)智算大会暨人工智能产业大会即将盛大启幕
11月9日,2024中国移动(南京)智算大会暨人工智能产业大会将在南京国际博览中心盛大举行。此次盛会将汇聚政界、学界与商界的顶尖力量,共同探讨智能计算与人工智能的未来发展方向,为智能计算与人工智能产业的发展注入新的…...

计算机毕业设计 | SpringBoot咖啡商城 购物采买平台 后台管理软件(附源码)
1,项目背景 1.1 当前的问题和困惑 系统稳定性: 在高并发访问时,商城系统容易出现卡顿、崩溃等问题,影响了用户体验和销售额。支付安全性: 支付环节存在潜在的安全隐患,如何确保支付过程的安全性和用户资金…...

CosyVoice文本转语音:轻松创造个性化音频
CosyVoice文本转语音:轻松创造个性化音频" 要实现一个使用通义语音合成模型CosyVoice将文字转换为音频的图形界面应用,可以使用Python的tkinter库来创建图形用户界面(GUI),并使用requests库来调用CosyVoice的API…...

法语nous sommes
法语短语 “nous sommes” 的词源可以追溯到拉丁语,具体分析如下: 1. “Nous” 的词源: “Nous” 是法语中表示 “我们” 的人称代词,源自拉丁语的 “nos”,它表示 “我们” 的意思。 拉丁语 “nos” 是第一人称复数…...

《化学进展》
《化学进展》主要栏目有:综述,评论,中国化学印记,Mini Accounts等。本刊可供化学及相关学科领域的科研、教学、决策管理人员及研究生阅读。 《化学进展》投稿指南稿件要求 (1)本刊仅接受综述与评论性的…...

CNN和RCNN的关系和区别
RCNN(Region-based Convolutional Neural Network)和 CNN(Convolutional Neural Network)是两种不同的神经网络架构,它们在应用和结构上有所不同。以下是它们之间的主要区别: 1. 基本概念 CNN(…...

Chromium 进程降权和提权模拟示例c++
一、背景知识概念参考微软链接: 强制完整性控制 - Win32 应用程序 |Microsoft 学习 授权) (模拟级别 - Win32 apps | Microsoft Learn DuplicateTokenEx 函数 (securitybaseapi.h) - Win32 apps | Microsoft Learn 本文主要演示 low, medium, high, and system 四…...