我们已经实现了一个带有背板的服务器,其中有 100 多个客户端正在连接。但是当我们对其进行测试时,我们发现当客户端断开连接时,它们都无法重新连接。我们还注意到 w3wp.exe 使用大量线程(超过 5000 个),然后 IIS 崩溃。
为了确定这是什么原因,我们清理了集线器,我们发现当记录器类被删除时,背板工作正常。我们使用了 NLog 记录器并将其作为静态记录器启动。
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
为了确认 NLog 是否有问题,我们在集线器类中创建了另一个静态对象,但它也显示出相同的高线程使用率。因此,似乎只要有静态对象,客户端就无法重新连接,并且 w3wp.exe 服务中的线程使用率很高。造成这种情况的原因是什么?
PS-我们使用 SQL 和 redis 背板进行了测试,结果完全相同。