Назад | Перейти на главную страницу

.NET + подключение к SQL Server 2008 R2

Недавно наши разработчики увеличили размер пула во всех строках подключения до 8000. Они используют VS 2010 Framework 4.0. На стороне БД я отслеживаю, что открывается до 4000 соединений. Но проблема в том, что у нас есть множество журналов ошибок (см. Ниже), связанных с тайм-аутом рукопожатия.

Для меня это очень сложная проблема, и я не мог найти ни одной подсказки. Я знаю, что с сервером, который у меня есть (настоящий монстр), мы можем поддерживать больше открытых соединений. Я знаю, что у Макса 32767, но я никогда не рассчитываю достичь этого числа, но четыре килограмма - это намного меньше.

Строки подключения:

connectionString 1 ="server=S1;database=DB1;Integrated Security=false; user id=user; Password=password; Min Pool Size=10; Max Pool Size=8000; Connect Timeout=5;" providerName="System.Data.SqlClient"/>
.
.
.
connectionString 10 ="server=S1;database=DB10;Integrated Security=false; user id=user; Password=password; Min Pool Size=10; Max Pool Size=8000; Connect Timeout=5;" providerName="System.Data.SqlClient"/>

И журнал ошибок:

GXMT.Common.DataGateway.DAOException: выполненная команда: System.Data.SqlClient.SqlException: истекло время ожидания подключения. Период ожидания истек на этапе после входа в систему. Время ожидания соединения могло истечь во время ожидания сервера, чтобы завершить процесс входа в систему и ответить; Или время ожидания истекло при попытке создать несколько активных подключений. Время, потраченное на попытку подключения к этому серверу, было - инициализация [Pre-Login] = 1; рукопожатие = 3565; [Логин] инициализация = 0; аутентификация = 0; [После входа] завершено = 1001; ---> System.ComponentModel.Win32Exception: время ожидания операции истекло

Спасибо.

PS: Новое обнаружение - это когда количество подключений превышает 4000, даже в Sql Server Management Studio открытие подключения занимает около 25 секунд. !?

У вас есть разработчик, который не закрывает соединения и не вызывает рост пула соединений. Периодически перерабатывайте пул соединений или попробуйте использовать трассировку sql, чтобы определить, когда создаются новые соединения, чтобы вы могли определить и исправить код проблемы.