使用 JMeter 进行 API 压力测试完整指南

JMeter 是一款非常强大的压测工具,广泛用于接口测试、性能测试和压力测试。本文将从配置方法 + 参数解释 + 报告生成完整讲解如何使用 JMeter 进行压测。


🧩 一、JMeter 压测的核心结构

一个完整的 JMeter 测试计划包含:

复制代码
Test Plan(测试计划)
 ├── Thread Group(线程组)
 │    ├── Sampler(请求)
 │    ├── Listener(监听器)
 │    └── Config / Timer / Assertion(可选)

⚙️ 二、核心配置:Thread Group

路径:

复制代码
Test Plan → Add → Threads (Users) → Thread Group

🔵 1. Number of Threads(线程数)

👉 表示并发用户数

例如:

复制代码
1000 Threads = 1000 个并发用户

📌 作用:

  • 模拟同时访问系统的用户数

  • 直接影响系统压力大小


🔵 2. Ramp-Up Period(启动时间)

👉 表示线程启动的时间(单位:秒)

公式:

复制代码
Ramp-Up = Threads × 0.1 ~ 0.3

示例:

Threads 推荐 Ramp-Up
100 10 ~ 30 秒
300 30 ~ 90 秒
500 50 ~ 150 秒
1000 100 ~ 300 秒

👉 每秒启动:

复制代码
1000 / 100 = 10 用户/秒

📌 作用:

  • 控制压力增长速度

  • 避免瞬间压垮系统

  • 更接近真实用户行为


🔵 3. Loop Count(循环次数)

👉 每个线程执行多少次请求


示例:

复制代码
线程数:100
循环次数:10

👉 总请求数:

复制代码
100 × 10 = 1000 请求

Loop 设置:

设置 含义
10 每个线程执行10次
Forever 一直循环(用于长时间测试)

📌 作用:

  • 控制总请求量

  • 影响测试持续时间


📡 三、添加接口请求(Sampler)

路径:

复制代码
Thread Group → Add → Sampler → HTTP Request

示例配置:


🔐 四、添加请求头(Header)

路径:

复制代码
Add → Config Element → HTTP Header Manager

添加:

复制代码
Content-Type: application/json
Authorization: Bearer xxx

📊 五、添加监听器(结果分析)

路径:

复制代码
Add → Listener

推荐添加:


1️⃣ Summary Report(汇总报告)

👉 查看:

  • 平均响应时间

  • 吞吐量(RPS)

  • 错误率


2️⃣ Aggregate Report(聚合报告)

👉 更详细:

  • P90 / P95 / P99

  • 最大响应时间

  • 吞吐量


3️⃣ View Results Tree(调试用)

👉 查看:

  • 请求/响应内容

  • 错误信息

⚠️ 不适合高并发测试


📈 六、JMeter 中的关键指标


🔵 Throughput(吞吐量)

👉 就是 RPS(每秒请求数)


🔵 Average(平均响应时间)

👉 系统整体响应速度


🔵 Percentiles(P95 / P99)

👉 95% / 99% 用户的响应时间


🔵 Error %

👉 请求失败比例


🚀 七、如何执行压测


GUI模式

直接点击:

复制代码
Start ▶

CLI模式(推荐)

复制代码
jmeter -n -t test.jmx -l result.jtl -e -o report

📄 八、生成 HTML 报告(重点)

JMeter 最强功能之一 👉 自动生成 HTML 报告


命令:

复制代码
jmeter -n -t test.jmx -l result.jtl -e -o report

参数说明:

参数 作用
-n 非GUI模式
-t 测试计划
-l 保存结果文件
-e 生成报告
-o 输出目录

📊 报告内容:

打开:

复制代码
report/index.html

你会看到:

  • 📈 RPS(吞吐量)

  • ⏱ 响应时间曲线

  • 📊 Percentiles

  • ❌ 错误率

  • 🧠 时间趋势图


🧠 九、推荐压测策略(非常重要)


🔵 Ramp-Up 压测

复制代码
Threads: 1000
Ramp-Up: 300 秒
Loop: 1

👉 逐步增加压力


🔵 稳定负载

复制代码
Threads: 500
Ramp-Up: 60 秒
Loop: 10

👉 长时间稳定运行


🔵 压力测试(极限)

复制代码
Threads: 2000
Ramp-Up: 60 秒
Loop: 1

👉 找系统崩溃点


🔵 Soak 测试(长时间)

复制代码
Threads: 300
Ramp-Up: 120 秒
Loop: Forever

👉 测试稳定性 & 内存泄漏


⚠️ 十、常见错误

❌ Ramp-Up 设为 0(瞬间压垮系统)

❌ 线程数过大(机器扛不住)

❌ 忽略 P99 指标

❌ GUI 模式跑高并发

❌ 没有监控 CPU / 内存


🔥 十一、最佳实践

✔ 使用 CLI 模式执行

✔ 分阶段压测(不要一次拉满)

✔ 关注 P95 / P99

✔ 结合监控(CPU / 内存 / 网络)

✔ 使用真实业务参数


🎯 总结

JMeter 压测的核心就是:

👉 控制并发(Threads) + 控制增长(Ramp-Up) + 控制请求量(Loop)

最终目标:

  • 找出系统极限

  • 发现性能瓶颈

  • 确保系统稳定


相关推荐
查拉图斯特拉面条19 小时前
JMeter 实战技巧:JSON 数组筛选指定对象并剔除首尾大括号
jmeter·json
查拉图斯特拉面条21 小时前
JMeter 实战:JSON 响应中文节点 + 数值精准断言(附真实接口案例)
jmeter·json
金戈鐡馬2 天前
压力测试与错误率统计完整实现
压力测试
qq_4924484463 天前
Jmeter Transaction Controller(事务控制器) 的 TPS(每秒事务数)严格固定为 1
java·开发语言·jmeter
Rookie_hh3 天前
使用Jmeter进行性能测试
jmeter
lifewange4 天前
常用中间件压力测试命令(极简速查)
中间件·压力测试
qq_452396236 天前
第十四篇:《JMeter插件扩展:自定义函数与第三方插件》
开发语言·python·jmeter
qq_452396236 天前
第十三篇:《分布式压测:JMeter Master-Slave集群》
分布式·jmeter
qq_452396237 天前
第十一篇:《性能压测基础:JMeter线程模型与压测策略设计》
java·开发语言·jmeter
沫沫-小白7 天前
JMeter 上传固定文件时,如何修改 Content-Disposition 的 filename
jmeter