相关推荐
1万元哪里能借到钱?急用钱必看这5个靠谱平台!
我的IPhone15 基础版充电发烫,很严重
JMeter压力测试
⚙️ 一、环境准备
安装配置
JDK环境:需JDK 1.8+,配置JAVA_HOME及PATH变量。
JMeter安装:官网下载解压,配置环境变量JMETER_HOME和CLASSPATH。
汉化(可选):修改bin/jmeter.properties,设置language=zh_CN。
插件扩展
安装并发线程组插件(如Stepping Thread Group):
下载插件JAR包放入lib/ext目录,重启JMeter。
通过Options > Plugins Manager安装(JMeter 5.0+)。
📝 二、脚本设计
核心组件
组件类型
作用
常用元素
线程组(Thread Group)
定义并发用户数、启动策略
普通线程组、Stepping Thread Group(逐步加压)
取样器(Sampler)
发送请求(HTTP/JDBC等)
HTTP请求、JDBC请求
监听器(Listener)
收集结果
查看结果树、聚合报告、TPS图表
断言(Assertions)
验证响应正确性
响应断言、JSON断言
定时器(Timer)
控制请求间隔
固定定时器、高斯随机定时器
脚本编写步骤
添加线程组:设置线程数(并发用户)、Ramp-Up时间(秒)、循环次数。
添加HTTP请求:
协议、IP、端口、路径、方法(GET/POST)。
请求头管理:添加Content-Type: application/json等。
参数化与关联:
使用CSV文件或函数助手动态传参(如用户名、Token)。
通过正则提取器或JSON提取器关联接口返回值。
添加断言:验证状态码(如200)、响应内容或响应时间(如<1s)。
📊 三、场景设计
并发模型
固定并发:直接设定目标线程数(如200线程),适用于验证指定负载能力。
逐步加压:
使用Stepping Thread Group:每5秒增加10用户,直至目标值并维持负载。
适用场景:探测系统瓶颈(如TPS下降点、错误率陡增点)。
关键参数
线程数 = 模拟用户数
Ramp-Up时间:避免瞬时压力导致服务雪崩(如100用户分10秒启动)。
循环次数:设为“永远”+ 调度器指定压测时长(如300秒)。
⏱️ 四、执行与监控
执行方式
GUI模式(调试用):界面点击运行,实时查看结果树。
命令行模式(正式压测):jmeter -n -t test.jmx -l result.jtl
减少资源占用,结果输出到result.jtl。
服务器监控
资源指标:CPU >80%、内存 >90%时可能为瓶颈。
网络带宽:避免带宽跑满(如30Mbps上限导致TPS骤降)。
工具:nmon(Linux)、zabbix或云监控平台。
📈 五、结果分析
核心指标(通过聚合报告获取)
指标
意义
达标参考
TPS
每秒事务数(吞吐量)
越高越好(如>100)
响应时间
90% Line(90%请求的响应时间)
<1秒(C端)、<3秒(B端)
错误率
失败请求占比
<0.1%
吞吐量
每秒接收数据量(KB/s)
结合带宽评估
监视器:
HPS:每秒请求数 --- jp@gc - Hits per Second
TPS:每秒事务数 --- jp@gc - Transactions per Second
TRT:事务响应时间 --- jp@gc - Response Times Over Time
活跃线程数--- jp@gc - Active Threads Over Time
复合图查看器--- jp@gc - Composite Graph
瓶颈定位
TPS plateau:持续加压但TPS不再增长 → CPU/DB/带宽瓶颈。
高错误率:连接超时(服务线程不足)、5xx错误(后端异常)。
响应时间陡增:线程阻塞(如数据库锁竞争、缓存击穿)。
📋 六、报告生成
导出HTML报告
jmeter -g result.jtl -o report/
生成可视化图表(TPS趋势、响应时间分布)。
报告内容
压测目标、场景参数(线程数、时长)
关键指标摘要(TPS峰值、平均响应时间、错误率)
资源消耗对比(CPU/内存/网络)
瓶颈分析与优化建议(如扩容、SQL优化)。
⚠️ 注意点
GUI模式勿用于正式压测:会消耗大量本地资源,数据失真。
断言与参数化必加:避免“压测成功但业务逻辑错误”。
分布式压测:单机模拟高并发受限时,用多台JMeter从机协同。
网络隔离:压测环境需与生产隔离,防止误操作。
💡 完整流程:
环境准备 → 2. 脚本调试(GUI模式)→ 3. 命令行执行压测 → 4. 实时监控资源 → 5. 分析JTL报告 → 6. 输出优化建议。
其他:阶梯型压测专题
核心价值
渐进加压:避免瞬时压力导致系统雪崩。
精准定位瓶颈:通过TPS曲线拐点、错误率突变点识别性能阈值。
三种实现插件对比
插件
特点
适用场景
Concurrency Thread Group
参数简洁(目标并发数、阶梯数、保持时间)
快速阶梯加压
Stepping Thread Group
常用,支持详细阶梯控制(初始线程、增量、保持时间)
传统阶梯测试
Ultimate Thread Group
多阶段独立配置,支持复杂波浪形压力曲线
浪涌+阶梯混合场景
核心参数详解
Concurrency Thread Group 参数
参数
说明
示例值
影响
Target Concurrency
目标并发用户总数
200
决定系统最终承受的最大负载
Ramp-Up Time (sec)
从初始并发达到目标并发所需的总时间
60
时间越短压力越陡峭,易暴露瞬时瓶颈
Ramp-Up Steps
加压阶梯数(将总时间均分为多个阶段)
5
阶梯数越多,压力增长越平滑
Hold Target Rate Time(sec)
达到目标并发后的持续运行时间
120
检测系统在稳定高负载下的表现
Thread Iterations Limit
每个线程的循环次数(设为-1表示持续运行至压测结束)
-1
控制单个用户的请求频率
Ultimate Thread Group 参数
参数
说明
示例值
作用
Start Threads Count
当前阶段启动的线程数
50
定义阶段起始负载
Initial Delay (sec)
阶段开始前的等待时间
0
用于多阶段衔接或预热
Startup Time (sec)
从0增加到目标线程数的时间
10
控制当前阶段的加压速度
Hold Load (sec)
保持当前线程数的持续时间
30
观察系统在固定负载下的稳定性
Shutdown Time (sec)
线程数降至0的时间
5
模拟用户逐步退出
关键逻辑:Ramp-Up Steps将总加压时间分割为多个阶梯,例如目标并发200、阶梯数5,则每阶梯增加40用户(200/5)。
配置示例
Target Concurrency: 200 // 目标并发数
Ramp-Up Time: 1 min // 总加压时长
Ramp-Up Steps: 5 // 分5个阶梯增加
Hold Target Rate: 2 min // 达到200并发后持续2分钟
效果:每分钟增加40用户(200/5),阶梯状压力上升。
结果分析关键点
TPS拐点:当阶梯加压中TPS停滞或下降,表明达到系统瓶颈。
错误率突增:某阶梯错误率>1%时,前一阶梯值为系统极限负载。
资源饱和度:CPU>80%或内存>90%的阶梯需标记为风险点。