SignalR背板跟踪日志

时间:2017-02-02 03:36:19

标签: c# sql-server signalr signalr-backplane

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

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背板是否已经工作,如果没有?

1 个答案:

答案 0 :(得分:2)

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

  1. 基础数据库表中的相关消息
  2. 在跟踪日志中记录来自SignalR.SqlMessageBus的消息(启用时)
  3. 更多信息:

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

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

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

    enter image description here

    在您的日志中,我只看到来自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>