Понимание ADO.NET «Время жизни соединения» - PullRequest
0 голосов
/ 05 июня 2018

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

Min Pool Size=5;Max Pool Size=100;Connect Timeout=8;Connection Lifetime=30;

Это, конечно, означает, что в пуле всегда есть минимум 5 подключений, что подтверждается PerfMon.

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

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

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

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

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

...