【问题标题】:Npgsql: Timeout while getting a connection from the poolNpgsql:从池中获取连接时超时
【发布时间】:2012-04-19 04:45:06
【问题描述】:

背景:我正在将我的应用程序从 mssql 移动到 npgsql v2.0.11.92。 在运行我的应用程序几分钟或几小时后,我收到 System.Exception: Timeout while getting a connection from the pool

我在 x64 平台的 x86 环境中使用 lib 版本 2.0.11.92。所有连接都已关闭并最迟在 finally 块中处理,但过了一会儿,我收到错误消息。所以,应该是Npgsql库的问题。

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

我使用的连接字符串是: SERVER=mydbserver;MINPOOLSIZE=3;MaxPoolSize=15;ConnectionLifeTime=7;DATABASE=Test DB;UID=user;PWD=pass

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

仅供参考:Npgsql 库已经存在泄漏问题,该问题已在最新版本 2.0.11.92 中得到修复。但我认为仍然存在一些问题。

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

【问题讨论】:

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

标签: connection connection-pooling npgsql postgresql-9.1


【解决方案1】:

我遇到了同样的问题。解决方案是关闭连接池。在从 C# 应用程序连接到数据库之前,您可以在连接字符串中执行此操作

在您的连接字符串中:

Pooling=false;

【讨论】:

  • 关闭连接池并不完全是解决方案。我们称之为解决方法。
  • 关闭它允许它工作,仍然需要弄清楚为什么连接池不起作用。
  • @ValentinKuzub 因为 npgsql 中的连接池有问题!
  • 我不确定为什么有些人不赞成我的回答。使用 npgsql 的连接池是错误的。
猜你喜欢
  • 2015-03-27
  • 1970-01-01
  • 2014-07-07
  • 2014-01-09
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 2010-12-11
相关资源
最近更新 更多