Jmeter进行性能并发测试
一、JMeter测试计划配置
1. 创建线程组(设置并发用户数)
- 右键测试计划 → 添加 → Threads (Users) → 线程组。
- 配置参数:
- 线程数(Number of Threads):
600
(并发用户数) - Ramp-Up时间(秒):
60
(60秒内逐步启动600个线程,避免瞬间压力) - 循环次数(Loop Count):
1
(每个线程仅执行一次请求,如需持续压测可改为永远
并设置持续时间) - 勾选“Same user on each iteration”(保持会话一致性,如接口需要登录)
- 线程数(Number of Threads):
2. 添加HTTP请求
- 右键线程组 → 添加 → Sampler → HTTP Request。
- 配置参数:
- 名称(Name):
QueryBook API
- 服务器名称或IP:
172.17.1.165
- 端口号:
15058
- 协议:
http
- 方法:
POST
- 路径:
/book/doctorstationapi/querybook
- Body Data: 选择
raw
,并输入JSON参数:json
{
"hisApplyNos": ["C102229667"]
}
- Content-Type头: 需单独添加(见下一步)。
- 名称(Name):
3. 添加HTTP头管理器
右键HTTP请求 → 添加 → Config Element → HTTP Header Manager。
添加以下头信息:
名称 值 Content-Type application/json (其他头) 如Authorization(如需) <img src="https://i.imgur.com/3vX5yWp.png" />
4. 添加监听器(查看结果)
推荐组合以下监听器,平衡实时监控与性能开销:
- 聚合报告(Aggregate Report):查看关键性能指标。
- 响应时间图(Response Times Over Time):观察响应时间趋势。
- TPS图(Transactions per Second):监控吞吐量变化。
- 查看结果树(View Results Tree)(仅调试时使用,600并发时禁用!)。
添加方法:
右键线程组 → 添加 → Listener → 选择对应监听器。
二、运行测试并查看结果
1. 启动测试
- 点击工具栏绿色三角形 “启动” 按钮(或菜单 Run → Start)。
- 观察JMeter控制台日志,确认无报错。
2. 实时监控结果
聚合报告(关键指标)
- Samples: 600(请求总数)
- Average: 平均响应时间(毫秒,如
200ms
表示良好,>1000ms
需优化) - Median: 中位数响应时间(50%请求低于此值)
- 90% Line: 90%请求的响应时间(关键性能阈值)
- Error %: 错误率(必须为
0%
,否则需检查接口或网络) - Throughput: 吞吐量(请求/秒,如
10 req/s
表示系统每秒处理10个请求)
<img src="https://i.imgur.com/ABCD5678.png" />
图形化监听器
- 响应时间图:确认无异常峰值(如突然飙升至5000ms)。
- TPS图:观察吞吐量是否稳定(如突然下降可能表示系统瓶颈)。
<img src="https://i.imgur.com/EFGH9012.png" />
3. 测试完成后分析结果
- 检查错误率:
- 如果
Error % > 0%
,点击错误请求查看具体原因(如超时、500错误)。 - 常见错误:
Connect Timeout
: 网络问题或服务端未响应。500 Internal Server Error
: 服务端代码异常。429 Too Many Requests
: 服务端限流。
- 如果
- 分析响应时间:
- 平均响应时间:整体性能基准。
- 90% Line:大多数用户的体验(比平均值更关键)。
- Max:极端情况下的性能(需确认是否为异常值)。
- 评估吞吐量:
- 根据业务需求判断
Throughput
是否达标(如系统要求每秒处理100请求,但实际只有50,则需优化)。
- 根据业务需求判断
三、优化建议(根据结果调整)
- 响应时间过长:
- 检查服务端日志,优化SQL或算法。
- 增加服务端资源(CPU、内存)。
- 启用缓存或异步处理。
- 吞吐量不足:
- 增加并发线程数(需逐步测试,避免过度压垮系统)。
- 使用连接池(如数据库连接池)。
- 负载均衡(分布式部署服务端)。
- 错误率上升:
- 检查服务端限流配置(如Nginx的
limit_req
)。 - 增加重试机制(JMeter可通过逻辑控制器实现)。
- 检查服务端限流配置(如Nginx的
四、保存测试结果
- 导出CSV文件:
- 在监听器(如聚合报告)中配置 Filename(如
C:/results/querybook_test.csv
)。 - 勾选 “Write results to file”。
- 在监听器(如聚合报告)中配置 Filename(如
- 生成HTML报告(高级):
- 使用JMeter插件
JMeter Plugins Manager
安装JP@GC - Graphs Generator
。 - 运行测试后,通过插件生成包含图表的HTML报告。
- 使用JMeter插件
五、完整操作流程总结
- 配置线程组 → 600并发,60秒Ramp-Up。
- 添加HTTP请求 → 设置POST方法和JSON参数。
- 添加HTTP头管理器 → 设置
Content-Type: application/json
。 - 添加监听器 → 聚合报告+图形化监听器。
- 启动测试 → 监控实时数据。
- 分析结果 → 检查错误率、响应时间、吞吐量。
- 优化系统 → 根据结果调整配置或代码。