Понимание ADO.NET «Время жизни соединения» ⇐ C#

Место общения программистов C#
Anonymous
Понимание ADO.NET «Время жизни соединения»

Сообщение Anonymous »

Я столкнулся с приложением с высоким трафиком, которое иногда сталкивается с различными проблемами тайм-аута масштабирования, которые я пытаюсь диагностировать. Приложение имеет следующие настройки в строке подключения SQL:

Код: Выделить всё

Min Pool Size=5;Max Pool Size=100;Connect Timeout=8;Connection Lifetime=30;
Это, конечно, означает, что в пуле всегда имеется как минимум 5 подключений, что подтверждается PerfMon.

Но если я правильно понимаю документацию Microsoft, параметр Время жизни соединения уничтожит любое закрытое соединение, существующее более 30 секунд:


Когда соединение возвращается в пул, время его создания
сравнивается с текущим временем, и соединение уничтожается, если
этот промежуток времени (в секундах) превышает значение, указанное в Connection
Lifetime.


Поскольку эти 5 (или более) соединения используются постоянно, прав ли я, полагая, что ни один из них никогда не проживет дольше 30 секунд? Таким образом, примерно каждые полминуты мое приложение полностью возвращается к SQL, чтобы установить связь с более чем 5 новыми соединениями?

PerfMon предполагает, что количество соединений никогда не опускается ниже этой отметки. 5, поэтому у меня нет никаких доказательств того, что вышеописанное происходит (если только это не происходит визуально мгновенно). Я неправильно понял?

Кроме того, эта древняя статья подтверждает, что проверка времени жизни выполняется только для Close(), поэтому этот параметр будет иметь нет выгоду от устранения любых утечек соединения?

Подробнее здесь: https://stackoverflow.com/questions/507 ... n-lifetime

Вернуться в «C#»