Обновление платформы.NET, приводящее к таймаутам SQL
У нас есть приложение, которое предназначено для.NET 4.5.1, и это не изменилось.
Однако, когда мы обновили платформу.NET на сервере с 4.5.1 → 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- Тайм-аут эмиссионного с-нетто-рамки-4-6-1-transparentnetworkipresolution/
Эта статья цитирует другой тип исключения, но может быть несколько связана. Однако я был бы ошеломлен, если бы наш DNS-поиск занял более 500 мс. Кроме того, я ожидаю увидеть гораздо больше случаев, когда эта конфигурация строки подключения сообщается и используется.
Наше приложение имеет высокий трафик, но мы уверены, что мы не испытываем утечки соединений, поскольку это никогда не было проблемой в течение многих лет, пока мы не обновили платформу.NET.
Мы попытаемся применить это исправление (и подождать> 24 часа, чтобы увидеть результаты), но есть ли что-нибудь еще, что мы могли бы пропустить? Мы не уверены, что это решение.
EDIT: Даже после перехода.NET обратно на 4.5.1 и перезагрузки всех серверов, мы все еще видим проблему. В кодовой базе ничего не изменилось, но нам еще нужно отменить изменение реестра, которое позволило "SchUseStrongCrypto" - если это может быть причиной?
Ответы
Ответ 1
Я этого не испытал, но ссылка https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/runtime/4.0-4.7.1 указывает на изменение пула соединений SQL, где оно теперь повторяет сломанные соединения намного дольше. Ссылка также обеспечивает настройку для обхода нового поведения;
ConnectRetryCount = 0
Возможно ли, что соединения в пуле теперь остаются в живых намного дольше, чем раньше, как побочный эффект или намеченная функция этого изменения поведения и, следовательно, засорение пула соединений "мертвыми, но повторными соединениями", тогда как раньше они бы умерли?
Это немного умозрительно; но может привести вас к правильному пути.