更新 .NET 框架导致 SQL 超时



我们有一个面向.NET 4.5.1的应用程序,这保持不变。

但是,当我们从 4.5.1 升级到 4.7.1>服务器上的 .NET 框架时,几个小时后我们开始遇到 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"的注册表更改 - 如果这可能是原因吗?

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

ConnectRetryCount = 0

作为此行为更改的副作用或预期功能,池中的连接现在是否可能比以前保持活动时间更长,因此使用"死但重试的连接"阻塞您的连接池,而以前它们会死亡?

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

最新更新