背景:我正在将我的应用程序从npgsql v1迁移到npgsql v2.0.9。运行我的应用程序几分钟后,我会收到一个System.Exception:从池中获取连接时超时的错误。
网络上声称这是由于泄漏的连接(打开数据库连接,但未正确关闭它们)导致的。
因此,我正在尝试诊断npgsql中的泄漏postgres连接。
根据网络上的各种文献,诊断泄漏连接的一种方法是在npgsql上设置日志记录,并查找日志中的泄漏连接警告消息。问题是,我在任何地方都没有看到这条消息。
我还发现了一个监视npgsql连接的实用程序,但它不稳定并且会崩溃。
所以我只能手动检查代码。对于每个创建npgsql连接的地方,都有一个finally块来处理它。对于每个打开数据读取器的地方,使用CommandBehavior.CloseConnection(并且数据读取器被处理)。
还有其他需要检查的地方吗?或者有人可以推荐一种查找泄漏池连接的方法吗?