Есть несколько хороших ссылок для мониторинга пулов соединений.Выполните в Google поиск по запросу «мониторинг пула соединений .net».
Одна статья, на которую я ссылался некоторое время назад, была Статья Билла Вона (обратите внимание, что она старая, но все еще содержит полезную информацию).Он содержит некоторую информацию о мониторинге пулов соединений, но также дает отличную информацию о том, где могут происходить утечки.
Для мониторинга он предлагает;
"Мониторинг пула соединений
Хорошо, значит, вы открыли соединение и закрыли его и хотите знать, является ли соединениевсе еще на месте - томится в пуле соединений на надувном матрасе. Ну, есть несколько способов определить, сколько соединений все еще на месте (все еще соединено) и даже что они делают. Я обсуждаю некоторые из них здесь и в моей книге:
· Используйте SQL Profiler с шаблоном SQLProfiler TSQL_Replay для трассировки. Для тех, кто знаком с Profiler, это проще, чем опрос с использованием SP_WHO.
· Запустите SP_WHO или SP_WHO2,которые возвращают информацию из таблицы sysprocesses для всех рабочих процессов, показывая текущее состояние каждого процесса. Как правило, есть один процесс сервера SPID на соединение. Если вы назвали свое соединение, используя аргумент имени приложения в строке соединения, это будет легконайти.
· Использование монитора производительности (PerfMon) для мониторинга пулов и соединений.Я подробно остановлюсь на этом далее.
· Мониторинг счетчиков производительности в коде.Эта опция позволяет вам отображать или просто отслеживать состояние вашего пула соединений и количество установленных соединений.Об этом я расскажу в следующем разделе этой статьи. "
Редактировать:
Как всегда, ознакомьтесь с другими подобными постами здесь в SO
Второе редактирование:
После того, как вы подтвердите, что пул не восстанавливает соединения, вы можете попробовать использовать еще одну вещь:событие StateChange, чтобы подтвердить, когда соединения открываются и закрываются. Если вы обнаружите, что в открытое состояние гораздо больше изменений, чем в закрытое, то это будет означать, что где-то есть утечки. Вы также можете зарегистрировать данные вСобытие stateaged вместе с отметкой времени, и если в вашем приложении есть какие-либо другие входы в систему, вы можете начать анализировать файлы журналов для случаев, когда, как представляется, изменения состояния закрыто для открытия, без соответствующего открытия для закрытия. См. эта ссылка для получения дополнительной информации о том, как обрабатывать StateChangedEvent.