Sqlalchemy:当池溢出时,连接不会关闭

时间:2011-04-05 09:41:12

标签: postgresql sqlalchemy connection-pooling

当我在我的网站上运行ab(apache benchmark)(在Apache Web服务器上托管SQLAlchemy和postgresql)时,SQLAlchemy与postgre建立了很多连接,并且我收到了太多的连接错误。

我追踪了问题,发现问题是池(实际上是QueuePool)。

http://www.sqlalchemy.org/docs/core/pooling.html#sqlalchemy.pool.Pool处的文档说,如果池已满,则返回连接(由于max_overflow允许创建这些额外连接而打开的连接)将被丢弃并断开连接。 但似乎连接实际上没有关闭!他们默默地从游泳池里辍学而没有关闭。

所以SQLAlchemy不断打开新连接,忽略它们(不关闭!)并打开新连接。

增加池大小不是真正的解决方案,问题是其他连接未关闭。

(QueuePool的默认设置是pool_size = 5和max_overflow = 10)

2 个答案:

答案 0 :(得分:1)

看起来像SQLAlchemy中的一个错误,修复于2周前:http://hg.sqlalchemy.org/sqlalchemy/rev/aff95843c12f#l2.17

此修补程序没有发布,因此您必须手动修补它。

答案 1 :(得分:0)

我认为它的错误和修复...从源代码安装并享受乐趣;)