你有没有经历过——
Collections.shuffle(testList),每次“随机”都像排好队;- Redis
increment()一执行,原本设置的过期时间直接神隐,变成永不过期的无底洞; - 明明设置了线程池,结果压测一上就直接打满CPU;
- 接口写得优雅,部署一上线却“优雅下线”,QPS 50就开始超时;
- 明明 return 的是
"success",用户却告诉你他们看到的是"502 Bad Gateway"; - 本地接口 10ms 响应,线上直接成了定时炸弹,时快时慢,像在看股市;
- 压力一上来,MySQL 慢 SQL 排队、Redis 热 Key 抖动、Tomcat 线程池告急,老板却问你:“接口是不是没优化好?”
有没有?有没有?有就对了!
这些坑,不是你写得不对,而是你没压过!
来来来,墙裂推荐一波 JMeter —— 后端必用的压测神器!
一款上手容易、功能强大、定位问题如开挂的工具,不管你是接口测试、链路压测、数据库负载验证,统统不在话下。
如果你连接口都没测过几百并发,怎么知道你的业务能抗住双11?
🧱 创建测试脚本(压测脚本)
1. 添加线程组(模拟用户)
右键“测试计划” → 添加 → 线程(用户)→ 线程组
设置示例:
| 参数 | 值 | 说明 |
|---|---|---|
| 线程数 | 10 | 模拟 10 个用户 |
| Ramp-Up 时间 | 5 | 5 秒内启动完所有用户 |
| 循环次数 | 3 | 每个用户请求 3 次 |
2. 添加 HTTP 请求
在线程组上右键 → 添加 → 取样器 → HTTP 请求
设置如下:
| 参数 | 值 |
|---|---|
| 协议 | https |
| 服务器名称或 IP | jsonplaceholder.typicode.com |
| 方法 | GET |
| 路径 | /posts/1 |
这里根据你们自己的接口实际情况填写,post/get傻瓜式填入,跟postman一样的,还可以添加header头,上传文件等等
3. 添加结果查看器
右键线程组 → 添加 → 监听器 → 查看结果树
它可以帮助我们查看每个请求的响应内容、状态码、执行时间等信息。
▶️ 运行测试
点击工具栏顶部的绿色 ▶️ 按钮运行压测。
运行完成后,切换到“查看结果树”组件,查看每个请求的响应内容和状态码。
📊 查看基本性能指标(可选)
你还可以添加一个“聚合报告”监听器:
右键线程组 → 添加 → 监听器 → 聚合报告
它会统计出以下指标:
| 指标 | 含义 |
|---|---|
| Average | 平均响应时间(毫秒) |
| Throughput | 吞吐量(每秒请求数) |
| Error % | 错误率 |
| Min / Max | 最快/最慢的响应时间 |
✅ 总结
通过以上简单几步,你已经实现了对一个 GET 接口的基本压测。JMeter 非常适合用来验证接口性能瓶颈、模拟并发、做接口验证。 这里只给你演示基本用法,更多流弊功能还需要你们自己取探索咯