更新.NET框架导致SQL超时

时间:2018-05-24 09:35:47

标签: c# sql .net connection-pooling

我们有一个针对.NET 4.5.1的应用程序,并且保持不变。

然而,当我们从4.5.1升级服务器上的.NET框架时 - > 4.7.1,我们几小时后开始体验SQL超时(应用程序目标保持在4.5.1)。

"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached."

其他具有相同处理效果的服务器也产生了这个问题,因此我们在.NET中寻找一个重大变化,并发现了这篇文章:https://blogs.msdn.microsoft.com/dataaccesstechnologies/2016/05/07/connection-timeout-issue-with-net-framework-4-6-1-transparentnetworkipresolution/

该文引用了不同的异常类型,但可能有些相关。但是,如果我们的DNS查询时间超过500毫秒,我会感到震惊。此外,我还希望看到更多关于此连接字符串配置的报告和使用情况。

我们的应用程序流量很大,但我们确信我们不会泄漏连接,因为在我们更新.NET框架之前,这一直不是问题。

我们将尝试应用此修复程序(并等待> 24小时才能看到结果),但还有什么我们可能错过的吗?我们不相信这是解决方案。

编辑:即使将.NET推回到4.5.1并重新启动所有服务器,我们仍然会看到问题。代码库中没有其他任何变化,但我们还没有回滚一个注册表更改,这使得' SchUseStrongCrypto' - 如果那可能是原因?

1 个答案:

答案 0 :(得分:3)

我没有经历过这种情况,但是链接https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/runtime/4.0-4.7.1表示对SQL连接池进行了更改,现在它更长时间地重试断开的连接。该链接还提供绕过新行为的设置;

 ConnectRetryCount = 0

池中的连接现在可能比以前更长时间保持活动作为此行为更改的副作用或预期功能,因此使用“死但重试连接”堵塞连接池,而之前它们会已经死了?

它有点投机;但可能会引导你走上正确的道路。