JMeter 进行 WebSocket 接口压测详细的步骤和要点:
1. 安装 WebSocket 插件
JMeter 原生不支持 WebSocket,需安装第三方插件:
- 推荐插件:
WebSocket Samplers by Peter Doornbosch - 下载地址:JMeter Plugins Manager 或直接搜索插件名称
- 安装方式:将下载的
.jar文件放入 JMeter 的lib/ext目录,重启 JMeter。
2. 配置测试计划
(1) 创建线程组
- 线程数 :模拟并发用户数(如
100) - Ramp-Up 时间 :线程启动时间(如
10秒) - 循环次数:压测持续时间或循环次数
(2) 添加 WebSocket 请求
- 选择
WebSocket Open Connection:- Server URL :WebSocket 服务地址(如
ws://example.com/endpoint) - Connection Timeout :连接超时(默认
5000ms)
- Server URL :WebSocket 服务地址(如
- 选择
WebSocket request-response:- Message :发送的消息内容(如
{"action":"ping"}) - Response Timeout:等待响应的超时时间
- Message :发送的消息内容(如
(3) 添加监听器
- 查看结果树:调试阶段检查请求/响应内容
- 聚合报告:查看吞吐量、响应时间等指标
- 图形结果:可视化 TPS、响应时间趋势
3. 关键配置示例
plaintext
WebSocket Open Connection:
Server URL: ws://your-websocket-server.com
Connection Timeout: 5000
WebSocket request-response:
Message: {"cmd":"loadTest","data":"test123"}
Response Timeout: 3000
4. 常见问题与优化
(1) 连接保持
- 使用 一个线程一个连接(避免频繁重建连接)
- 在
WebSocket Open Connection后添加 定时器 模拟持续交互
(2) 参数化动态数据
-
使用 CSV 数据文件 读取不同消息内容:
plaintextmessage_data1 message_data2 -
在
WebSocket request-response中引用变量:${message}
(3) 结果断言
-
添加 JSON 断言 或 响应断言 验证返回结果:
plaintext// 示例:检查返回状态码 $.status == 200
5. 执行与监控
- 启动压测:点击工具栏的 运行 按钮
- 监控资源:
- 服务端 CPU/内存
- 网络带宽
- JMeter 自身资源消耗(避免成为瓶颈)
- 分析结果:
- 吞吐量(Throughput):单位时间处理请求数
- 响应时间(Response Time):P90/P95 等百分位数
- 错误率:连接失败或响应异常的比例
6. 注意事项
- 心跳机制:若 WebSocket 需心跳保活,添加定时发送消息的采样器
- 消息大小:调整消息长度测试不同负载场景
- 分布式压测:使用多台 JMeter 机器避免单机瓶颈