【发布时间】:2011-07-29 19:51:42
【问题描述】:
当我在我的网站上运行 ab(apache 基准测试)时(SQLAlchemy 和 postgresql 托管在 Apache Web 服务器上),SQLAlchemy 与 postgre 建立了许多连接,并且出现了太多连接错误。
我追踪了问题,发现问题是池(实际上是QueuePool)。
http://www.sqlalchemy.org/docs/core/pooling.html#sqlalchemy.pool.Pool 的文档说,如果池已满,返回的连接(因为 max_overflow 允许创建这些额外连接而打开)将被丢弃并断开连接。 但似乎连接实际上并没有关闭!他们默默地从游泳池里掉了出来,没有关门。
所以 SQLAlchemy 不断打开新连接,忽略它们(不关闭!)并打开新连接。
增加池大小不是真正的解决方案,问题是没有关闭额外的连接。
(QueuePool 的默认设置是 pool_size=5 和 max_overflow=10)
【问题讨论】:
标签: postgresql sqlalchemy connection-pooling