строка соединения SQL тайм-аута баланса нагрузки - PullRequest
2 голосов
/ 30 апреля 2010

Кажется, что если где-то есть утечка памяти sql и у вас нет времени, чтобы найти ее, вы можете использовать опцию тайм-аута балансировки нагрузки в строке соединения sql, чтобы уничтожить соединение через x секунд.

Прав ли я, предполагая, что я могу установить время балансировки нагрузки на 30-40 секунд, а затем отследить утечку последнего, в то время как в то же время утечка не сильно повлияет на мое приложение.

Ответы [ 2 ]

1 голос
/ 11 декабря 2014

(Добавил бы в качестве комментария к Guffa, но мой представитель недостаточно высок)

Вы почти правы относительно поведения Тайм-аута балансировки нагрузки, по крайней мере, для .NET 3.5+ и, вероятно, раньше. При извлечении соединения из пула оно убивает все, что было открыто в течение указанного количества секунд. Нормальное использование, конечно, для балансировки нагрузки. Вот неоднозначный документ для .NET 3.5 с поясняющими комментариями внизу:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.90%29.aspx

А вот парень из MS с 2004 года говорит то же самое:

http://blogs.msdn.com/b/angelsb/archive/2004/09/20/231963.aspx

РЕДАКТИРОВАТЬ: Я только что понял, что этот параметр не поможет описанному случаю, потому что соединения разрушаются только при получении из пула. Утечка соединений никогда не извлекается из пула снова, так как «утечка» означает, что они никогда не будут возвращены в пул.

1 голос
/ 30 апреля 2010

Нет. Тайм-аут балансировки нагрузки - это минимальное время существования соединения в пуле, оно не ограничивает время жизни соединений.

Возможно, вы ищете параметр Connection Lifetime , который принудительно закрывает соединения, если они устарели при возврате в пул, но это также не поможет, поскольку проблема что соединения не возвращаются в пул.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...