Npgsql Утечка связей Postgres DB: способ мониторинга соединений?

Справочная информация. Я перемещаю свое приложение из npgsql v1 в npgsql v2.0.9. Через несколько минут после запуска моего приложения я получаю сообщение System.Exception: Timeout, получая соединение из пула.

Веб-сайт утверждает, что это происходит из-за утечки соединений (открытие соединения db, но не закрытие их должным образом).

Итак,

Я пытаюсь диагностировать утечку соединений postgres в npgsql.

Из различных веб-литературы; одним из способов диагностики утечек соединений является настройка ведения журнала на npgsql и поиск предупреждающего сообщения о утечке в журнале. Проблема в том, что я не вижу это сообщение в журналах где-нибудь.

Я также нашел утилиту, которая контролирует соединения npgsql, но она нестабильна и сбой.

Итак, я оставил ручную проверку кода. Для каждого приложения, создающего соединение npgsql, есть блок, в котором он находится. Для каждого, кто открывает datareader, используется CommandBehavior.CloseConnection(и размещается datareader).

Любые другие места для проверки или кто-то может рекомендовать способ поиска утечек пула соединений?

Ответ 1

UPDATE: я лучше всего проверяю, где были выделены эти соединения утечки. Пожалуйста, проверьте мое сообщение об этом: http://fxjr.blogspot.com/2012/11/better-tracing-of-npgsql-connection.html Надеюсь, это поможет.

EDIT: вы можете попробовать нашу последнюю бета-версию 2.0.11.91. Мы добавили еще один код для улучшения пула соединений, который может вам помочь.

Хмммм, это очень странно... Вы должны получать сообщения.

Эти сообщения появляются только тогда, когда ms.net runtime завершает работу объекта. Возможно ли, что вы используете одновременно больше соединений по умолчанию по умолчанию? Я имею в виду, что ваше пиковое использование может быть больше, чем 20 максимальных соединений...

Надеюсь, это поможет.

Пожалуйста, дайте мне знать, что вы получите.