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

最终目标:

  • 找出系统极限

  • 发现性能瓶颈

  • 确保系统稳定


相关推荐
某人辛木18 小时前
JMeter下载安装配置
jmeter
汽车仪器仪表相关领域19 小时前
Kvaser Memorator Professional HS/LS:高速 + 低速双通道 CAN 总线记录仪,跨系统诊断的专业级解决方案
网络·人工智能·功能测试·测试工具·安全·压力测试
迷藏4942 天前
# 发散创新:用Locust实现高并发场景下的精准压力测试与性能调优实战在现代微服务架构中,**接口稳定性与响应速度**已成为衡量
java·python·微服务·架构·压力测试
查拉图斯特拉面条2 天前
JMeter脚本中断排查:CSV配置导致线程提前终止
jmeter
汽车仪器仪表相关领域3 天前
Kvaser Memorator Pro 2xHS v2:双通道CAN FD智能记录仪,赋能华南汽车与工业总线测试升级
大数据·人工智能·功能测试·安全·汽车·压力测试·可用性测试
lifewange5 天前
JMeter InfluxDB 后端监听器 全参数详解
jmeter
姚青&5 天前
软件测试概念
压力测试
川石课堂软件测试6 天前
技术分享|JMeter接口与性能测试实战
数据库·功能测试·测试工具·jmeter·单元测试·postman·prometheus
弹简特6 天前
【精通JMeter接口测试】03-JMeter 接口测试持续集成踩坑记:jtl 转 Allure 报告、Jenkins 定时执行、CSP 样式劫持全解决
jmeter·自动化·jenkins