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

零基础学习性能测试第三章:jmeter线程组组合

目录

      • 一、五大线程组类型对比(附使用场景)
      • 二、三大核心场景配置详解(附截图级示例)
        • ▶ 场景1:梯度加压测试(容量探测)
        • ▶ 场景2:尖峰冲击测试(秒杀场景)
        • ▶ 场景3:全天流量模拟(终极组合)
      • 三、线程组组合高阶技巧
        • 技巧1:混合场景比例控制
        • 技巧2:精准TPS控制(吞吐量整形)
        • 技巧3:分布式压力注入
      • 四、零基础避坑指南
      • 五、经典组合方案模板
        • 电商大促压力模型

掌握JMeter线程组组合是模拟真实业务压力的核心技术。针对零基础用户,以下通过对比表格+可视化配置+经典案例拆解线程组组合的实战方法:


一、五大线程组类型对比(附使用场景)

线程组类型核心能力适用场景配置重点
普通线程组线性加压/减压基础负载测试线程数、ramp-up时间、循环次数
阶梯线程组阶梯式增压容量规划、拐点探测每级用户数/持续时间
Ultimate线程组自定义复杂压力模型混合场景(渐变+峰值+波动)多阶段压力曲线设计
同步定时器瞬间聚集并发用户秒杀/抢购场景模拟用户组数量
吞吐量整形定时器精准控制TPS恒压测试、流量整形目标吞吐量(TPS)

关键认知:真实业务压力 = 基础负载 + 突发流量 + 波动衰减,需组合使用线程组!


二、三大核心场景配置详解(附截图级示例)

▶ 场景1:梯度加压测试(容量探测)

目标:探测系统最大承载能力
配置组合
在这里插入图片描述

操作步骤

  1. 添加插件 → Ultimate Thread Group(需安装插件管理器)
  2. 配置阶梯计划:
    Start Threads Count: 50  | Initial Delay: 0  | Startup Time: 60  | Hold Load: 60
    Start Threads Count: 100 | Initial Delay: 60 | Startup Time: 60  | Hold Load: 120
    Start Threads Count: 150 | Initial Delay: 180| Startup Time: 60  | Hold Load: 120
    

    效果:每分钟增加50用户,观察每级负载下的性能表现

▶ 场景2:尖峰冲击测试(秒杀场景)

目标:验证瞬时高并发抗压能力
配置组合

普通线程组
同步定时器
HTTP请求-秒杀接口

关键配置

  1. 线程组设置:线程数=5000,ramp-up=1(快速启动)
  2. 添加 Synchronizing Timer
    • Number of Simulated Users to Group by: 5000
    • Timeout in milliseconds: 30000(超时释放)
  3. 在定时器下添加秒杀请求

原理:阻塞所有线程直到5000用户集齐,瞬间释放制造峰值

▶ 场景3:全天流量模拟(终极组合)

目标:模拟24小时业务波动(含早晚高峰)
配置组合
在这里插入图片描述

配置示例(使用Ultimate Thread Group):

时段起始用户数增压时间持续时长目标用户数
早高峰10030min2h2000
午间平稳200010min6h2000
晚高峰200020min4h3000
夜间衰减300060min4h500

监控要点:配合PerfMon监控服务器资源波动趋势


三、线程组组合高阶技巧

技巧1:混合场景比例控制
// 在Ultimate线程组下使用Throughput Controller
if (__jexl3("${__threadNum} % 10 < 3")) {// 30%用户执行A流程
} else if (__jexl3("${__threadNum} % 10 < 8")) {// 50%用户执行B流程
} else {// 20%用户执行C流程
}
技巧2:精准TPS控制(吞吐量整形)
  1. 添加 Throughput Shaping Timer
  2. 配置目标TPS曲线:
    {"0": 100,   // 第0分钟起TPS=100"300": 500, // 第5分钟达到TPS=500"600": 300  // 第10分钟降至TPS=300
    }
    
  3. 关联 Constant Throughput Timer 实现动态调整
技巧3:分布式压力注入
# 在jmeter.properties中配置集群
remote_hosts=192.168.1.101:1099,192.168.1.102:1099
# 启动Agent机:jmeter-server -Djava.rmi.server.hostname=本机IP

四、零基础避坑指南

  1. 阶梯测试内存泄漏

    • 问题:长时间测试后OOM崩溃
    • 解决:在JVM参数添加 -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError
  2. 同步定时器失效

    • 问题:部分请求未同步发出
    • 检查:
      • 超时时间 > 线程启动时间
      • 禁用jmeter.engine.standard_exit配置
  3. 压力曲线失真

    • 问题:实际TPS与目标偏差大
    • 优化:
      • 使用精确吞吐量定时器(Precise Throughput Timer)插件
      • 减少监听器数量(尤其View Results Tree)

五、经典组合方案模板

电商大促压力模型
  1. 预热阶段(10min):

    • 普通线程组:100用户线性递增
  2. 梯度增压(30min):

    • Ultimate线程组:500 → 2000用户(每级+500用户,持续5min)
  3. 峰值冲击(5min):

    • 同步定时器:5000用户瞬时冲击
  4. 平稳保持(2h):

    • 吞吐量整形:维持TPS=800
  5. 衰退阶段(20min):

    • 阶梯线程组:2000 → 500用户递减

立即实践

  1. 安装插件管理器:下载jmeter-plugins-manager.jar
  2. 安装插件:Concurrency Thread Group + Throughput Shaping Timer
  3. 复制上述电商模板配置试运行

通过线程组的灵活组合,可精准模拟任意业务场景。关键原则:从简单模型开始,逐步叠加复杂度,配合监控数据持续优化压力曲线设计!

http://www.dtcms.com/a/299458.html

相关文章:

  • LeetCode|Day26|191. 位 1 的个数|Python刷题笔记
  • Java学习|黑马笔记|Day23】网络编程、反射、动态代理
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年7月26日第150弹
  • 在Power Automate Desktop中执行PowerShell获取SharePoint online某个文件夹的用户权限列表
  • SAP ABAP的数据通过调用泛微Restful API同步数据到OA建模表
  • 学习日志19 python
  • pytest中的rerunfailures的插件(失败重试)
  • 在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
  • 【Kubernetes】使用StatefulSet进行的资源调度,扩缩容,更改配置到版本回滚,三种配置更新方式
  • c#中让图片显示清晰
  • 三、平衡桥电路
  • 060_泛型擦除与边界限定
  • MySQL数据库SQL语句进阶篇——连接查询与子查询详解
  • Traffic Lights set的使用
  • CSS变量与Houdini自定义属性:解锁样式编程新维度
  • Go 语言函数设计原则:避免修改传入参数
  • MCU中的GPIO(通用输入/输出)是什么?
  • [Qt]QString隐式拷贝
  • 利用DeepSeek解决kdb+x进行tpch测试的几个问题及使用感受
  • 系统架构设计师-【2025年上半年案例题】-真题分享
  • unittest 案例执行顺序详解
  • [SAP ABAP] ALV报表练习4
  • FreeRTOS-事件组
  • Cortex-M3内核SysTick定时器介绍
  • `munmap`系统调用及示例
  • 柔性智造:华控智能的垂直整合定制方案
  • 微服务springcloud http客户端feign
  • 伟淼科技李志伟:破解二代接班传承困局,系统性方案破除三代魔咒
  • Redis缓存策略以及bigkey的学习(九)
  • C语言——学习笔记