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

Blazor Server应用客户端负载测试求助:WebSocket与认证录制问题

针对Blazor Server应用的负载测试方案

核心问题分析

Blazor Server依赖**SignalR(WebSocket/WSS)**实现客户端与服务器的实时双向通信,普通HTTP录制工具(包括JMeter的默认HTTP代理)只能捕获初始的HTTP握手请求,无法记录后续的WebSocket帧交互,这就是你看不到认证信息和完整连接请求的原因。

JMeter解决方案:添加WebSocket Sampler

是的,必须添加WebSocket相关组件来模拟SignalR交互,具体步骤如下:

  • 安装JMeter插件:通过JMeter插件管理器安装WebSocket Samplers by Peter Doornbosch
  • 模拟完整SignalR连接流程:
    1. 先完成Service Stack认证流程:发送登录请求,提取生成的Cookie或JWT Token等认证凭证
    2. 发送初始HTTP GET请求完成SignalR握手,请求头中携带上一步的认证凭证,获取握手返回的ConnectionId等关键参数
    3. 使用WebSocket Open Connection sampler建立WSS连接,传入握手得到的参数
    4. 使用WebSocket Single Write Read或WebSocket Continuous Read sampler模拟Blazor的双向消息交互,比如心跳帧、业务操作触发的消息
  • 关联认证凭证:确保所有请求(包括WebSocket连接的握手请求)都携带有效的Service Stack认证信息,否则无法建立合法连接

替代工具推荐

如果JMeter配置复杂度较高,可考虑以下更适配实时通信场景的工具:

  • k6:支持WebSocket/SignalR脚本编写,采用JavaScript语法,能灵活模拟Blazor客户端的SignalR交互逻辑,适合快速构建负载测试场景
  • LoadRunner Professional:内置WebSocket协议支持,可直接录制并回放SignalR会话,适配复杂企业级负载测试需求
  • SignalR Load Test Tool:微软官方提供的SignalR专用负载测试工具,针对SignalR协议做了优化,能高效模拟大量Blazor客户端连接

关键注意事项

  • Blazor Server每个客户端连接对应服务器端的一个.NET线程,负载测试时重点关注服务器线程数、内存占用、CPU使用率等指标,而非单纯的请求数量
  • 需模拟真实用户操作流程:不仅要建立连接,还要模拟页面交互触发的SignalR消息,还原真实业务场景
  • 认证关联要准确:Service Stack的认证凭证必须在SignalR握手请求中正确携带,否则服务器会拒绝连接

内容的提问来源于stack exchange,提问作者Pradeep Goli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:09:53