集线器内的SignalR静态对象使重新连接失败并带有背板

时间:2017-05-22 05:35:34

标签: c# sql redis signalr signalr-backplane

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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