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连接流程:
- 先完成Service Stack认证流程:发送登录请求,提取生成的Cookie或JWT Token等认证凭证
- 发送初始HTTP GET请求完成SignalR握手,请求头中携带上一步的认证凭证,获取握手返回的
ConnectionId等关键参数 - 使用
WebSocket Open Connectionsampler建立WSS连接,传入握手得到的参数 - 使用
WebSocket Single Write Read或WebSocket Continuous Readsampler模拟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
相关产品推荐
相关产品推荐

