【问题标题】:SignalR static objects inside hub makes reconnect fail with backplane集线器内的 SignalR 静态对象使背板重新连接失败
【发布时间】:2017-10-21 15:57:43
【问题描述】:

我们已经实现了一个带有背板的服务器,其中有 100 多个客户端正在连接。但是当我们对其进行测试时,我们发现当客户端断开连接时,它们都无法重新连接。我们还注意到 w3wp.exe 使用大量线程(超过 5000 个),然后 IIS 崩溃。

为了确定造成这种情况的原因,我们清理了集线器,发现当记录器类被移除后,背板工作正常。我们使用了 NLog 记录器并将其作为静态记录器启动。

private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();

为了确认 NLog 是否有问题,我们在集线器类中创建了另一个静态对象,但它也显示出同样高的线程使用率。因此,似乎只要有静态对象,客户端就无法重新连接,并且 w3wp.exe 服务中的线程使用率很高。造成这种情况的原因是什么?

PS- 我们使用 SQL 和 redis 背板进行了测试,结果完全相同。

【问题讨论】:

    标签: c# sql redis signalr signalr-backplane


    【解决方案1】:

    问题不在于使用集线器内的静态对象,而是使用 NLogTraceListener 进行日志信号器跟踪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-10
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多