npgsql Утечка Postgres соединения с БД: способ контролировать соединения? - PullRequest
11 голосов
/ 05 мая 2010

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

Интернет утверждает, что это связано с утечкой соединений (открытием соединения с БД, но не правильнозакрывая их).

Итак

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

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

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

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

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

1 Ответ

7 голосов
/ 05 мая 2010

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

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

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

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

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

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

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