Диагностика утечек SqlConnection? - PullRequest
3 голосов
/ 26 марта 2009

У меня проблема с веб-приложением, которое исчерпывает все доступные соединения в пуле соединений. Кажется, я помню некоторые хорошие инструменты, используемые для диагностики всех активных соединений, но я рисую пустым. Какие есть хорошие варианты для диагностики этой проблемы?

Ответы [ 4 ]

2 голосов
/ 26 марта 2009

Используете ли вы объекты SqlDataReader в вашем приложении? Объект SqlDataReader будет держать свое соединение открытым до тех пор, пока оно не будет закрыто.

1 голос
/ 27 марта 2009

. Net memory profiler из WinDbg с SOS позволит вам отследить, кто содержит ссылки на ваши объекты подключения, с помощью этой информации вы сможете отследить нарушителя методы.

1 голос
/ 26 марта 2009

Вы можете запустить sp_who для просмотра активных соединений с SQL-сервера, но, скорее всего, вы не закрываете свои соединения, как предлагали другие. Однако, если вы закрываете соединения, но открываете их немедленно (например, в цикле чтения текстового файла или чего-то еще), вы можете использовать их все, даже если думаете, что закрываете их (посмотрите Пул соединений ). Если вы разместите пример своего кода, я думаю, что вы получите лучший ответ.

1 голос
/ 26 марта 2009

Я голосую за просмотр кода. Однажды у меня была похожая ситуация с приложением, созданным сторонними разработчиками, и при быстром поиске соединения выяснилось, что он не использовал / наконец, чтобы убедиться, что соединения закрыты при возникновении исключения.

Также, как указал Майкл, вы должны убедиться, что соединения, используемые считывателями данных, закрыты. Вы можете указать, что соединение закрыто, когда читатель закрыт, тогда для этих случаев просто убедитесь, что читатель данных удален (с использованием () {})

...