使用 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)

最终目标:

  • 找出系统极限

  • 发现性能瓶颈

  • 确保系统稳定


相关推荐
Echoo华地5 小时前
Gatling压测案例
java·jmeter·压力测试·并发·scale·压测·gatling
橘子编程6 小时前
软件测试全流程实战指南
java·功能测试·测试工具·junit·tomcat·压力测试·可用性测试
汽车仪器仪表相关领域7 小时前
广州文明机电 新能源汽车运行安全性能检验解决方案
人工智能·功能测试·安全·单元测试·汽车·压力测试·可用性测试
chenjingming6661 天前
jmeter处理接口返回中文乱码的问题
jmeter
chenjingming6661 天前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
洛_尘1 天前
测试9:性能测试--工具篇(JMeter)
jmeter
夜晚打字声1 天前
7(七)Jmeter吞吐量设置
jmeter
chenjingming6661 天前
jmeter导入浏览器上按F12抓的数据包
前端·chrome·jmeter
爱编程的小吴4 天前
JMeter从入门到精通:一站式掌握性能测试
jmeter