You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter中建立多并行WebSocket连接至SignalR Hub的方法

JMeter模拟SignalR登录流程负载测试指南

1. 在JMeter中创建WebSocket连接

JMeter默认不支持WebSocket,需要先装插件,步骤如下:

  • 打开JMeter,顶部菜单栏选「选项」→「Plugins Manager」,搜索WebSocket Samplers by Peter Doornbosch,点击安装后重启JMeter。
  • 右键「测试计划」→「添加」→「Threads(Users)」→「线程组」,这是承载所有用户操作的容器。
  • 右键刚才创建的线程组→「添加」→「配置元件」→「WebSocket Connection Configuration」。
  • 在配置面板里,填入你的SignalR Hub的WebSocket地址,格式类似wss://你的域名/hub/目标Hub名称;可以按需设置连接超时时间,默认值一般够用。

2. 通过已建立的WebSocket连接调用自定义端点

SignalR的方法调用是通过发送特定格式的JSON消息实现的,用WebSocket Text Sampler来操作:

  • 右键线程组→「添加」→「Sampler」→「WebSocket Text Sampler」。
  • 在采样器的「Connection」区域,选择「Use existing connection」,并选中你之前配置的WebSocket连接名称。
  • 构造SignalR调用的JSON请求体,以Login端点为例:
{
  "protocol": "json",
  "version": 1,
  "type": 1,
  "invocationId": "${__UUID()}",
  "target": "Login",
  "arguments": ["测试用户名", "测试密码"]
}

字段说明:

  • type:1表示这是方法调用请求
  • target填你的自定义端点名称(比如Login/Logoff)
  • arguments是端点需要的参数,按实际格式填写
  • invocationId用${__UUID()}生成唯一标识,避免请求冲突
  • 调用Logoff端点时,复制上述采样器,把target改成Logoff,调整arguments即可。
  • 最后添加断开连接的采样器:右键线程组→「添加」→「Sampler」→「WebSocket Close Sampler」,同样选择已有的连接。

3. 模拟多用户并行执行负载测试

通过线程组配置即可实现多用户并行:

  • 打开线程组的配置面板:
    • 「Number of Threads(users)」:设置为你需要的用户数(比如60),每个线程对应一个独立用户。
    • 「Ramp-Up Period(in seconds)」:设置为10-30秒,意思是在这个时间内逐步启动所有用户,避免瞬间请求量过大压垮服务器。
    • 「Loop Count」:设为1表示每个用户只执行一次完整流程;如果需要重复执行,填对应次数。
  • 每个线程会自动创建独立的WebSocket连接,无需额外配置,天然隔离用户会话。
  • 添加监听器查看测试结果:右键线程组→「添加」→「监听器」,常用的有「查看结果树」(看每个请求的成败)、「聚合报告」(看响应时间、吞吐量等指标)。

新手额外提示

  • 先单线程跑一遍流程,确认连接、Login、Logoff、断开每一步都成功,再放大用户数。
  • 如果你的SignalR Hub需要先发送HTTP协商请求,可先添加「HTTP请求」采样器,发送GET请求到https://你的域名/hub/目标Hub名称/negotiate,提取返回的connectionId等参数,再填入WebSocket配置中(部分WebSocket插件可自动处理协商,可先尝试直接连)。
  • 要模拟真实用户的不同账号,可添加「CSV Data Set Config」配置元件,加载包含用户名、密码的CSV文件,用变量替换请求体里的账号参数。

内容的提问来源于stack exchange,提问作者Jano du Toit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:45:34