0

在我们的应用程序中,我们使用 sql server 实现了信号器横向扩展。背板已配置,但似乎无法将消息发送到与其连接的所有服务器。是否有事件或任何其他方式来记录到达背板的请求以及它将这些消息发送到哪些服务器,以便我们确定问题出在哪里。我们可以在每个服务器中启用信号器跟踪日志,以下是来自它的跟踪。但是这里的信息太少,我们无法找到问题。

2017-02-02 04:05:11.7642 TRACE  SignalR.SqlMessageBus  Stream 0 : No records received (System.Diagnostics.TraceSourceExtensions.Trace) 
2017-02-02 04:05:11.7798 TRACE  SignalR.SqlMessageBus  Stream 0 : Waiting 3000ms before checking for messages again (System.Diagnostics.TraceSourceExtensions.Trace) 
2017-02-02 04:05:14.8111 TRACE  SignalR.SqlMessageBus  Created DbCommand: CommandType=Text, CommandText=SELECT [PayloadId], [Payload], [InsertedOn] FROM [SignalR].[Messages_0] WHERE [PayloadId] > @PayloadId, Parameters= [Name=PayloadId, Value=51373] (System.Diagnostics.TraceSourceExtensions.Trace) 
2017-02-02 04:05:14.8111 TRACE  SignalR.SqlMessageBus  Stream 0 : No records received (System.Diagnostics.TraceSourceExtensions.Trace) 
2017-02-02 04:05:14.8267 TRACE  SignalR.SqlMessageBus  Stream 0 : Setting up SQL notification (System.Diagnostics.TraceSourceExtensions.Trace) 
2017-02-02 04:05:14.8267 TRACE  SignalR.SqlMessageBus  Created DbCommand: CommandType=Text, CommandText=SELECT [PayloadId], [Payload], [InsertedOn] FROM [SignalR].[Messages_0] WHERE [PayloadId] > @PayloadId, Parameters= [Name=PayloadId, Value=51373] (System.Diagnostics.TraceSourceExtensions.Trace)

我如何知道 sql 背板是否已经在工作,如果没有?

4

1 回答 1

2

简短的回答:要验证后备箱是否正常工作,必须满足以下条件,您应该能够看到

  1. 基础数据库表中的相关消息
  2. SignalR.SqlMessageBus从跟踪日志中记录消息(启用时)

更多信息:

我们还将 SignalR 与 SQL scaelout 一起使用,当新消息持久保存到数据库表时,我们会获得以下跟踪日志:

SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Saving payload with 1 messages(s) to SQL server

在此之后,我们可以在相应的 SignalR 表中识别消息(取决于您的配置,可能有多个):

在此处输入图像描述

在您的日志中,我只看到来自SignalR.SqlMessageBus. 要获取更多详细信息,您还应该将与横向扩展相关的跟踪源设置为Verbose,ActivityTracing这样(请参阅显示SignalR.ScaleoutMessageBus日志消息的最后两行):

SignalR.SqlMessageBus Verbose: 0 : Stream 0 : SqlReceiver last payload ID=8390, new payload ID=8391
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : SqlReceiver last payload ID=8390, new payload ID=8391
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Updated receive reader initial payload ID parameter=8391
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Updated receive reader initial payload ID parameter=8391
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Payload 8391 containing 1 message(s) received
SignalR.SqlMessageBus Verbose: 0 : Stream 0 : Payload 8391 containing 1 message(s) received
SignalR.ScaleoutMessageBus Information: 0 : OnReceived(0, 8391, 1)
SignalR.ScaleoutMessageBus Information: 0 : OnReceived(0, 8391, 1)

SignalR.ScaleoutMessageBus可以像这样配置跟踪源:

  <source name="SignalR.ScaleoutMessageBus" switchName="SignalRSwitch" >
    <listeners>
      <add name="SignalR-Bus" />
    </listeners>
  </source>
于 2017-03-21T04:35:21.530 回答