Предыстория: я перемещаю свое приложение с npgsql v1 на npgsql v2.0.9. Через несколько минут запуска моего приложения я получаю System.Exception: Timeout при получении соединения из пула.
В Интернете утверждается, что это связано с утечкой соединений (открытие соединения с базой данных, но неправильное его закрытие).
So
Я пытаюсь диагностировать утечку соединений postgres в npgsql.
Из разнообразной сетевой литературы; один из способов диагностировать утечку соединения - настроить ведение журнала на npgsql и найти в журнале предупреждающее сообщение об утечке соединения. Проблема в том, что я нигде не вижу этого сообщения в логах.
Я также нашел утилиту, которая отслеживает соединения npgsql, но она нестабильна и дает сбой.
Так что мне остается вручную проверять код. Для каждого места, где создается соединение npgsql, есть блок finally, который его удаляет. Для каждого места, где открывается средство чтения данных, используется CommandBehavior.CloseConnection (и средство чтения данных удаляется).
Есть ли другие места для проверки или кто-нибудь может порекомендовать способ поиска утечек в соединениях пула?