JMeter 进行 WebSocket 接口压测

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 :连接超时(默认 5000 ms)
  • 选择 WebSocket request-response
    • Message :发送的消息内容(如 {"action":"ping"}
    • Response Timeout:等待响应的超时时间
(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 数据文件 读取不同消息内容:

    plaintext 复制代码
    message_data1
    message_data2
  • WebSocket request-response 中引用变量:${message}

(3) 结果断言
  • 添加 JSON 断言响应断言 验证返回结果:

    plaintext 复制代码
    // 示例:检查返回状态码
    $.status == 200

5. 执行与监控

  1. 启动压测:点击工具栏的 运行 按钮
  2. 监控资源:
    • 服务端 CPU/内存
    • 网络带宽
    • JMeter 自身资源消耗(避免成为瓶颈)
  3. 分析结果:
    • 吞吐量(Throughput):单位时间处理请求数
    • 响应时间(Response Time):P90/P95 等百分位数
    • 错误率:连接失败或响应异常的比例

6. 注意事项

  • 心跳机制:若 WebSocket 需心跳保活,添加定时发送消息的采样器
  • 消息大小:调整消息长度测试不同负载场景
  • 分布式压测:使用多台 JMeter 机器避免单机瓶颈

相关推荐
m0_7301151111 分钟前
用户认证与授权:使用JWT保护你的API
jvm·数据库·python
tyung11 分钟前
用 zhenyi-base 做一个带网页的群聊 Demo
websocket·go
kaisun6414 分钟前
树莓派4B上使用INMP441麦克风进行语音识别:从I2S配置到Python环境搭建全记录
python·语音识别·树莓派
七夜zippoe21 分钟前
Python 3.12+ 新特性深度解析:类型系统与性能革命
android·网络·python·类型系统·性能革命·3.12+
如若12325 分钟前
WSL2 启动报错“拒绝访问“ E_ACCESSDENIED 完整解决方案
人工智能·pytorch·python·深度学习·计算机视觉
qq_3349031531 分钟前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
Storynone32 分钟前
【Day30】卡码网:46. 携带研究材料,LeetCode:416. 分割等和子集
python·算法·leetcode
Xpower 1733 分钟前
Clawith:开启多智能体协作的新纪元
人工智能·python·语言模型·自动化
阿钱真强道39 分钟前
28 Python 分类:不只是画一条线,一文认识支持向量机(SVM)
python·支持向量机·分类·svm·边界·核方法·高维
Jay_Franklin41 分钟前
Python一站式科研工作流:从数据分析到报告生成
开发语言·python·论文笔记