当我在我的网站上运行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)
答案 0 :(得分:1)
看起来像SQLAlchemy中的一个错误,修复于2周前:http://hg.sqlalchemy.org/sqlalchemy/rev/aff95843c12f#l2.17
此修补程序没有发布,因此您必须手动修补它。
答案 1 :(得分:0)
我认为它的错误和修复...从源代码安装并享受乐趣;)