我有一个托管在Azure应用程序服务上的Blazor Server应用程序,它似乎相当“聊天”,因为它正在处理浏览器上的一些UI事件,如拖放事件。我添加了跟踪日志,以估计使用了多少SignalR消息及其大小。
我的Program.cs中有以下内容
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole();
// Logs to trace Blazor SignalR traffic.
logging.AddFilter("Microsoft.AspNetCore.SignalR", LogLevel.Trace);
logging.AddFilter("Microsoft.AspNetCore.Http.Connections", LogLevel.Trace);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}这给了我一个相当广泛的日志输出,如下所示:
trce: Microsoft.AspNetCore.Http.Connections.Internal.Transports.WebSocketsTransport[9]
Message received. Type: Binary, size: 319, EndOfMessage: True.
dbug: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[1]
Received hub invocation: InvocationMessage { InvocationId: "", Target: "DispatchBrowserEvent", Arguments: [ {"browserRendererId":0,"eventHandlerId":366,"eventArgsType":"mouse","eventFieldInfo":null}, {"type":"click","detail":1,"screenX":386,"screenY":-443,"clientX":700,"clientY":514,"offsetX":70,"offsetY":21,"button":0,"buttons":0,"ctrlKey":false,"shiftKey":false,"altKey":false,"metaKey":false} ], StreamIds: [ ] }.
trce: Microsoft.AspNetCore.Http.Connections.Internal.Transports.WebSocketsTransport[11]
Sending payload: 1078 bytes.
trce: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[7]
InvocationId (null): Sending result of type 'System.Void'.
trce: Microsoft.AspNetCore.Http.Connections.Internal.Transports.WebSocketsTransport[9]
Message received. Type: Binary, size: 28, EndOfMessage: True.
dbug: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[1]
Received hub invocation: InvocationMessage { InvocationId: "", Target: "OnRenderCompleted", Arguments: [ 1237, ], StreamIds: [ ] }.
trce: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[7]
InvocationId (null): Sending result of type 'System.Void'.
trce: Microsoft.AspNetCore.Http.Connections.Internal.Transports.WebSocketsTransport[11]
Sending payload: 13216 bytes.我可以看到在那里发送了大量消息,我认为这是由于初始数据加载到服务器大小(从数据库)并传递到组件以呈现信息造成的。较小的UI事件会产生大量较小的75字节消息(显然)。
我正在应用一些正则表达式工作来从这些日志中获得我需要的信息,而不是确定收集到的信息的准确性。
对SignalR消息进行计数的最佳/正确方法是什么(在消息数量和每条消息的大小方面)?
我想评估使用Azure SignalR服务来扩展我的应用程序是否是一个可行的解决方案。
here描述了如何将Azure SignalR消息计入账单。
到目前为止,我对SignalR的免费层进行了测试,在几分钟内就超过了每天20000条免费消息。在测试每天100万条免费消息的标准层时,我可以看到在一小时内已有数十万条消息被使用。
我已经找到了在我的应用程序上产生不想要的(或非常大的)消息的东西,但有些东西似乎已经失控;我需要正确地衡量这一点。
发布于 2021-09-24 09:57:12
谢谢你,SnehaAgrawal-MSFT发布你的suggestion作为一个答案,以帮助其他社区成员。
“您可以参考此Doc on resource logs for Azure SignalR Service以及如何设置它们,以及如何使用它们进行故障排除。
此外,对于空闲层实例中的SignalR资源,每天的消息限制为20000。
请检查此Microsoft document,了解SignalR服务中的邮件计数方式。
如果较大的消息被分成较小的消息并计入多个消息,在这种情况下,连接将受到限制。
如果消息计数是预期的,则唯一的解决方案是将实例扩展到没有硬消息计数限制的标准层。
有关详细信息,请参阅此Microsoft文档:。Evaluation for complex use cases for Azure SignalR Service
https://stackoverflow.com/questions/69277202
复制相似问题