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
相关产品推荐
相关产品推荐

