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
示例配置:
-
Method: POST
-
URL:
http://localhost:8080/admin-api/system/tenant/get-id-by-name
-
Body:
{
"name": "demo-tenant"
}
🔐 四、添加请求头(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)
最终目标:
-
找出系统极限
-
发现性能瓶颈
-
确保系统稳定