问题 Npgsql:从池中获取连接时超时


背景:我正在将我的应用程序从mssql移动到npgsql v2.0.11.92。 运行我的应用程序几分钟或几小时后,我得到了一个 System.Exception:从池中获取连接时超时

我在x64平台的x86环境中使用lib版本2.0.11.92。所有连接最迟都关闭并置于finally块中,但过了一段时间后,我收到错误。所以,它应该是Npgsql库的问题。

在我的应用程序中,每隔几秒就会在后台发生很多查询,但大多数情况下,它们只是按顺序运行,而不是在并行运行。

我用过的连接字符串是: SERVER = mydbserver; MINPOOLSIZE = 3; MaxPoolSize = 15; ConnectionLifeTime = 7; DATABASE =测试数据库; UID =用户; PWD =通过

我正在尝试诊断npgsql中泄漏的postgres连接。

供参考: Npgsql库已经出现了泄漏问题,已在最新版本2.0.11.92中修复。但我认为仍有一些问题。

有没有人遇到过与当前库版本(npgsql v2.0.11.92)类似的问题?


6461
2018-04-05 12:33


起源

这个问题还存在吗?我使用版本2.0.14.3,我也得到了这个错误。 - IvanP
我遇到了同样的问题:在我的情况下,事实证明我没有在所有代码路径中关闭连接。 - EKanadily


答案:


我有同样的问题。解决方案是关闭连接池。在从c#app连接到数据库之前,请在连接字符串中执行此操作

在您的连接字符串中:

Pooling=false;

10
2018-04-25 06:23



关闭连接池并不是完全解决方案。我们称之为解决方法。 - IvanP
关闭它允许它工作,仍然需要弄清楚为什么连接池不起作用。 - Cody
那为什么解决方案有效呢? - Valentin Kuzub
@ValentinKuzub,因为npgsql中的连接池是错误的! - Arya
我不确定为什么有些人会低估我的答案。与npgsql的连接池是错误的。 - Arya