当前位置: 首页 > article >正文

Jmeter-负载测试

目录

一. 基础负载测试场景:固定并发用户数

1、线程组配置

2、HTTP请求配置

3、添加定时器

4、添加监听器

4.1 聚合报告

4.2 响应时间图

4.3 查看结果树

5、结果分析指标

二. 阶梯式加压场景(逐步增加并发)

1、插件安装

2、阶梯配置

3、HTTP请求配置

4、监听器配置

4.1 Active Threads Over Time:查看并发用户数变化曲线

4.2 Response Time Over Time:观察并发响应时间变化曲线

4.3 聚合报告

5、结果分析指标

三、峰值流量场景(突发流量冲击)

1、插件安装

2、配置突发流量模型

3、HTTP请求配置

4、监听器配置

4.1 Active Threads Over Time:查看并发用户数变化曲线

4.2 Response Time Over Time:观察并发响应时间变化曲线

4.3 聚合报告:统计错误率、平均响应时间等核心指标

4.4 Composite Graph:叠加显示RPS、响应时间、活跃线程数,定位性能拐点

5、结果分析指标

四、生成报告


一. 基础负载测试场景:固定并发用户数

场景:验证系统在预期最大并发下的稳定性,验证系统在固定并发用户数下的响应时间、吞吐量和错误率。

例如:模拟 100 用户同时访问登录接口,持续 10 分钟。

1、线程组配置

 右键“测试计划” → 添加线程组(添加 > 线程(用户) > 线程组

  • 线程数(用户数):100

  • Ramp-Up 时间:0 秒(立即启动所有线程,模拟瞬时并发)

    如果希望逐步加压后再保持并发,10 秒(用户逐步启动)
  • 循环次数:设为 Forever,通过 Scheduler 设置持续时间 600 秒(10 分钟)。

2、HTTP请求配置

右键线程组 → 添加 → 取样器→ 选择 HTTP请求

具体配置,详见文章:Jmeter-功能测试

3、添加定时器

 精确模拟瞬时并发:右键HTTP请求 → 添加 → 定时器 →同步定时器

4、添加监听器

4.1 聚合报告

右键线程组 → 添加→监听器→聚合报告

4.2 响应时间图

右键线程组 → 添加→监听器→响应时间图

4.3 查看结果树

仅调试时使用,正式压测需禁用,避免内存溢出

右键线程组 → 添加→监听器→查看结果树

5、结果分析指标

指标说明
Samples总请求数
Average RT平均响应时间(应低于业务阈值,如500ms)
Throughput每秒处理请求数(TPS),越高说明系统吞吐能力越强
Error %错误率(应接近0%,异常请求需排查原因)
90% Line (RT)90%请求的响应时间小于该值(反映长尾性能)

二. 阶梯式加压场景(逐步增加并发)

场景:逐步增加并发用户数,观察系统性能拐点(如响应时间陡增、错误率上升),确定系统能承受的最大并发用户数。

例如:每 2 分钟增加 50 用户,直到达到 300 用户,持续5分钟。

1、插件安装

安装插件管理器:JMeter Plugins Manager  具体安装步骤:略

选项-->Plugins Manager-->Available Plugins-->搜索并安装 Concurrency Thread Group、3 Basic Graphs

2、阶梯配置

 右键“测试计划” → 添加线程组(添加 > 线程(用户) > Stepping Thread Group)

  • 关键参数

    • This group will start 100 threads:总线程数(如100用户)

    • First, wait for 0 seconds:启动前等待时间

    • Then start 10 threads:初始并发用户数

    • Next, add 10 threads every 60 seconds:每60秒增加10用户

    • Using ramp-up 10 seconds:每次新增用户的启动时间

    • Then hold load for 300 seconds:达到最大并发后持续300秒

    • Finally, stop 5 threads every 1 seconds:释放线程速度(可选)

3、HTTP请求配置

右键线程组 → 添加 → 取样器→ 选择 HTTP请求

具体配置,详见文章:Jmeter-功能测试

4、监听器配置

4.1 Active Threads Over Time:查看并发用户数变化曲线

右键线程组 → 添加→监听器→Active Threads Over Time

4.2 Response Time Over Time:观察并发响应时间变化曲线

右键线程组 → 添加→监听器→Response Time Over Time

4.3 聚合报告

右键线程组 → 添加→监听器→聚合报告

5、结果分析指标

5.1 响应时间趋势

当并发增加时,响应时间是否线性增长?是否存在突增拐点?

5.2 吞吐量曲线

吞吐量是否随并发增加而上升?到达某一点后是否趋于稳定?

5.3 错误率变化

高并发阶段是否出现超时(如HTTP 504)或业务错误(如HTTP 500)?

三、峰值流量场景(突发流量冲击)

场景:模拟短时间内的高并发请求(如秒杀活动),测试系统抗突发流量能力。

        例如:在 10 秒内启动 1000 用户访问下单接,保持30秒高并发。

1、插件安装

安装插件管理器:JMeter Plugins Manager  具体安装步骤:略

选项-->Plugins Manager-->Available Plugins-->搜索并安装 Custom Thread Groups、3 Basic Graphs、Composite Timeline Graph

2、配置突发流量模型

右键“测试计划” → 添加线程组(添加 > 线程(用户) > Ultimate Thread Group)

  • 关键参数

    Start Threads Count: 1000   (突发并发用户数)
    Initial Delay (sec): 0      (立即启动)
    Startup Time (sec): 10       (10秒内启动所有线程)
    Hold Load (sec): 30         (保持30秒高并发)
    Shutdown Time (sec): 10      (10秒内停止所有线程)

3、HTTP请求配置

右键线程组 → 添加 → 取样器→ 选择 HTTP请求

具体配置,详见文章:Jmeter-功能测试

4、监听器配置

4.1 Active Threads Over Time:查看并发用户数变化曲线

右键线程组 → 添加→监听器→Active Threads Over Time

4.2 Response Time Over Time:观察并发响应时间变化曲线

右键线程组 → 添加→监听器→Response Time Over Time

4.3 聚合报告:统计错误率、平均响应时间等核心指标

右键线程组 → 添加→监听器→聚合报告

4.4 Composite Graph:叠加显示RPS、响应时间、活跃线程数,定位性能拐点

右键线程组 → 添加→监听器→Composite Graph

5、结果分析指标

指标健康标准异常排查建议
错误率(Error %)<1%检查服务器日志、数据库连接池、限流配置
平均响应时间(RT)符合业务SLA(如≤2秒)分析慢查询、GC停顿、网络带宽瓶颈
吞吐量(Throughput)接近系统理论最大值检查CPU/内存是否饱和、是否有锁竞争
活跃线程数与配置的突发线程数一致JMeter客户端资源是否充足

典型问题定位

  • 大量504 Gateway Timeout

    • 后端服务处理超时 → 优化SQL或增加服务超时阈值。

  • 频繁429 Too Many Requests

    • 触发限流 → 验证限流阈值是否合理,或扩容服务节点。

  • 数据库连接池耗尽

    • 错误日志显示Cannot get a connection → 增大连接池或引入缓存

四、生成报告

命令执行

jmeter -n -t testplan.jmx -l result.jtl -e -o report/
  • -n: 无GUI模式

  • -t: 测试计划文件

  • -l: 结果日志文件

  • -e -o: 生成HTML报告

    相关文章:

    Jmeter-负载测试

    目录 一. 基础负载测试场景&#xff1a;固定并发用户数 1、线程组配置 2、HTTP请求配置 3、添加定时器 4、添加监听器 4.1 聚合报告 4.2 响应时间图 4.3 查看结果树 5、结果分析指标 二. 阶梯式加压场景&#xff08;逐步增加并发&#xff09; 1、插件安装 2、阶梯配…...

    《深度剖析SQL数据类型转换:隐式与显式的奥秘》

    在SQL的世界里&#xff0c;数据类型转换是一个基础且关键的操作&#xff0c;它贯穿于数据库开发、管理与数据分析的各个环节。数据类型转换分为隐式转换和显式转换&#xff0c;二者各有特点与应用场景&#xff0c;深刻理解它们对于编写高效、稳定的SQL代码至关重要。 一、数据…...

    基于大模型的自发性气胸全方位预测与诊疗方案研究

    目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型预测自发性气胸的原理及技术基础 2.1 大模型介绍 2.2 模型构建与训练数据 2.3 模型训练与优化 三、术前风险预测与准备 3.1 术前风险预测指标 3.2 基于预测的术前准备 3.3 手术方案与麻醉方案制定…...

    经销商订货管理系统小程序PHP+uniapp

    订货管理系统的行业变革势能 在实体商业与电商融合加速的2025年&#xff0c;订货管理系统已成为连锁品牌、商贸批发企业及工厂客户的核心数字化基建。面对经销商订货流程冗长、加盟商库存协同低效、批发贸易数据孤岛等行业痛点&#xff0c;新一代系统通过ThinkPHPUniapp技术架…...

    性能测试理论基础-测试流程及方案设计要点

    需求调研 因性能测试技术性和专业性要求比较高,通常需要性能测试人员参与需求调研和确认。 需求调研阶段,通常需要确认以下信息: 项目背景、测试范围、业务逻辑 & 数据流转(与开发确认)、系统架构、软硬件配置信息、 测试数据量(量级要一致)、外部依赖(第三方系统…...

    TextGrad:案例

    原文&#xff1a;Yuksekgonul, M., Bianchi, F., Boen, J. et al. Optimizing generative AI by backpropagating language model feedback. Nature 639, 609–616 (2025). https://doi.org/10.1038/s41586-025-08661-4 目录 Solution optimizationPrompt optimization for rea…...

    kafka 4.x docker启动kafka4.0.0 docker-compose启动最新版kafka 如何使用docker容器启动最新版kafka

    1. 镜像选择标签&#xff1a; https://hub.docker.com/r/bitnami/kafka/tags 2. 命令&#xff1a; docker pull bitnami/kafka:4.0.0 3. docker-compose.yml 启动kafka4.0.0&#xff1a; version: 3services:kafka:image: bitnami/kafka:4.0.0container_name: kafkaports:- &…...

    Next.js 中间件鉴权绕过漏洞 (CVE-2025-29927) 复现利用与原理分析

    免责声明 本文所述漏洞复现方法仅供安全研究及授权测试使用&#xff1b; 任何个人/组织须在合法合规前提下实施&#xff0c;严禁用于非法目的&#xff1b; 作者不对任何滥用行为及后果负责&#xff0c;如发现新漏洞请及时联系厂商并遵循漏洞披露规则。 漏洞原理 Next.js 是一个…...

    C#Lambda表达式与委托关系

    1. 核心关系图示 A[委托] --> B[提供方法容器] B --> C[Lambda表达式] C --> D[委托实例的语法糖] A --> E[类型安全约束] C --> F[编译器自动生成委托实例] 2. 本质联系 2.1 类型关系 ‌Lambda表达式‌是编译器生成的‌委托实例‌表达式自动匹配符合签名的…...

    AOA与TOA混合定位,MATLAB例程,自适应基站数量,三维空间下的运动轨迹,滤波使用EKF

    本代码实现了一个基于 到达角(AOA) 和 到达时间(TOA) 的混合定位算法,结合 扩展卡尔曼滤波(EKF) 对三维运动目标的轨迹进行滤波优化。代码通过模拟动态目标与基站网络,展示了从信号测量、定位解算到轨迹滤波的全流程,适用于城市峡谷、室内等复杂环境下的定位研究。 文…...

    Uni-app入门到精通:subPackages节点为小程序的分包加载配置

    subPackages节点用于为小程序的分包加载配置。因小程序有体积和资源加载限制&#xff0c;各小程序平台提供了分包方式&#xff0c;以加快小程序的下载和启动速度。主包用于放置默认启动页面、babBar页面&#xff0c;以及一些所有分包都会用到的公共资源或JS脚本&#xff1b;而分…...

    如何编写单元测试

    一、前言知识 1.开发过程 需求分析->设计->开发->测试->上线 2.测试种类 单元测试(测试模块编码)、黑盒测试(测试功能是否满足需求)、白盒测试(测试程序内部的逻辑结构)、回归测试(提出的缺陷进行二次验证)、集成测试(测试主要的业务功能及模块间的整合性)、系…...

    Linux系统编程 | 线程的基本概念

    &#x1f493;个人主页&#xff1a;mooridy &#x1f493;专栏地址&#xff1a;Linux 关注我&#x1f339;&#xff0c;和我一起学习更多计算机的知识! &#x1f51d;&#x1f51d;&#x1f51d; 什么是线程 程序中的一个执行路线就叫做线程 一个进程至少要有一个执行线程,单…...

    C语言之数据结构:双向链表

    个人主页&#xff1a;云纳星辰怀自在 座右铭&#xff1a;“所谓坚持&#xff0c;就是觉得还有希望&#xff01;” 前言 前文阐述了数据结构中单向链表的定义、分类和实际应用。本文将重点阐述带哨兵节点的双向循环链表。 1. 带头双向循环链表 带头双向循环链表 是一种特殊的链…...

    剑指Offer62 -- 约瑟夫环

    1. 题目描述 圆圈中最后剩下的数字 2. 约瑟夫环 人们站在一个等待被处决的圈子里。 计数从圆圈中的指定点开始&#xff0c;并沿指定方向围绕圆圈进行。 在跳过指定数量的人之后&#xff0c;处刑下一个人。 对剩下的人重复该过程&#xff0c;从下一个人开始&#xff0c;朝同一方…...

    RAG生成中的多文档动态融合及去重加权策略探讨

    目录 RAG生成中的多文档动态融合及去重加权策略探讨 一、RAG生成概述 二、多文档动态融合策略 1. 拼接与分段编码 2. 独立编码与后续融合 3. 基于查询的动态加权 三、检索结果的去重与加权策略 1. 去重策略 2. 加权策略 四、实践中的挑战与思考 五、结语 RAG生成中的…...

    jdk21使用Vosk实现语音文字转换,免费的语音识别

    1.下载vosk的model vosk官网&#xff1a;https://alphacephei.com/vosk/models 我这里使用较小的vosk-model-small-cn-0.22 2.添加相关pom文件 <!-- 获取音频信息 --><dependency><groupId>org</groupId><artifactId>jaudiotagger</artifac…...

    I.MX6ULL 开发板上挂载NTFS格式 U 盘

    I.MX6ULL 开发板上挂载NTFS格式 U 盘 挂载失败安装NTFS-3G安装失败成功安装 移植挂载成功卸载U盘 挂载失败 我使用的U盘的格式是NTFS格式的 插入U盘时会有信息 我使用的是闪迪的U盘&#xff0c;大小标称是 32G &#xff0c;实际能用的只有 28G 左右 可以使用lsblk命令查看磁盘…...

    性能测试~

    1.什么是性能测试 1.什么是性能 就像这两个车一样,虽然都是代步工具,构造都是一样的,但是路虎的发动机要比捷达好.路虎的百米加速却是比捷达快的,我们就知道路虎的性能要比捷达好 . 那么什么是软件的性能呢?我们分析一下 2.常见的性能测试指标 2.1并发数 并发数是指在同一…...

    排查使用RestTemplate远程调用,@RequestBody注解接收不到实体类

    做项目学习&#xff0c;使用RestTemplate远程调用&#xff0c;从order订单系统调用pay支付系统&#xff0c;出现使用Request做远程接收。 代码的逻辑很简单&#xff0c;但就是没有接收到实体类 1. 猜想是不是没有序列化和初始化方法&#xff1f; 这个好排查&#xff0c;看Pay和…...

    数据库同步中间件PanguSync:如何跳过初始数据直接进行增量同步

    某些用户在使用数据库同步中间件PanguSync时说&#xff0c;我不想进行初次的全量同步&#xff0c;我已经源备份还原到目标库了&#xff0c;两边初始数据一样&#xff0c;想跳过初始数据&#xff0c;直接进行增量同步&#xff0c;该怎么设置。 直接上干货&#xff0c;按如下步骤…...

    javaWeb Router

    一、路由简介 1、什么是路由&#xff1f; - 定义&#xff1a;路由就是根据不同的 URL 地址展示不同的内容或页面。 - 通俗理解&#xff1a;路由就像是一个地图&#xff0c;我们要去不同的地方&#xff0c;需要通过不同的路线进行导航。 2、路由的作用 - 单页应用程序…...

    qwen2.5vl技术报告解读

    一. 首先qwen2.5vl模型特点 全能文档解析能力 升级文本识别至全场景文档解析,擅长处理多场景、多语种及复杂版式文档(含手写体、表格、图表、化学方程式、乐谱等),实现跨类型文档的精准解析。 跨格式精准目标定位 突破格式限制,大幅提升对象检测、坐标定位与数量统计精度,…...

    【Linux】进程的详讲(上)

    目录 &#x1f4d6;1、冯诺依曼体系结构 &#x1f4d6;2、硬件介绍 &#x1f4d6;3、内存的重要性 &#x1f4d6;4、程序运行的步骤 &#x1f4d6;5、QQ聊天时的数据流动 &#x1f4d6;6、操作系统 &#x1f4d6;7、操作系统的目的 &#x1f4d6;8、操作系统是如何…...

    高精度除法

    除数与被除数都是大整数 代码 #include<bits/stdc.h> using namespace std; typedef long long ll; string a,b; vector<int>dend,sor; bool aisbigger(vector<int>&a,vector<int>&b){if(a.size()!b.size())return a.size()>b.size();for…...

    Android面试总结之Glide源码级理解

    当你的图片列表在低端机上白屏3秒、高端机因内存浪费导致FPS腰斩时&#xff0c;根源往往藏在Glide的内存分配僵化、磁盘混存、网络加载无优先级三大致命缺陷中。 本文从阿里P8级缓存改造方案出发&#xff0c;结合Glide源码实现动态内存扩容、磁盘冷热分区、智能预加载等黑科技&…...

    Pyside6 开发 使用Qt Designer

    使用Qt Designer 在Scripts目录下打开pyside6-designer.exe 分别将姓名、年龄、爱好对应的输入框的ObjectName 设置为 uname、uage、ulike 提交按钮Object设置为 btnSubmit 点击保存文件 &#xff0c;命名为student.ui 将.ui文件编程成.py文件 pyside6-uic student.ui -o st…...

    PyQt6实例_批量下载pdf工具_使用pyinstaller与installForge打包成exe文件

    目录 前置&#xff1a; 步骤&#xff1a; step one 准备好已开发完毕的项目代码 step two 安装pyinstaller step three 执行pyinstaller pdfdownload.py&#xff0c;获取初始.spec文件 step four 修改.spec文件&#xff0c;将data文件夹加入到打包程序中 step five 增加…...

    局域网共享失败?打印机/文件夹共享工具

    很多时候&#xff0c;在办公或家庭环境中&#xff0c;我们需要进行打印机和文件夹的共享&#xff0c;以便更高效地协作和处理文件。然而&#xff0c;寻找对应版本的共享设置或是不想花费太多时间去进行复杂的电脑设置&#xff0c;总是让人感到头疼。今天&#xff0c;我要向大家…...

    DeepSeek-V3-250324: AI模型新突破,性能超越GPT-4.5

    DeepSeek 于 3 月 25 日宣布完成 V3 模型的小版本升级&#xff0c;推出 DeepSeek-V3-250324 版本。新版本在推理能力、代码生成、中文写作及多模态任务上实现显著优化&#xff0c;尤其在数学和代码类评测中得分超越 GPT-4.5&#xff0c;引发行业高度关注。 DeepSeek-V3-250324…...