You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy连接池状态参数含义咨询(含负溢出值疑问)

连接池参数含义及负值Overflow解析

背景信息

使用Python 3.9.16 + aioodbc 0.5.0,通过SQLAlchemy的create_async_engine配置连接池:

  • pool_size=8:连接池常驻连接数上限
  • max_overflow=10:允许超出常驻数的临时连接数上限

通过以下代码监控连接池状态:

pool_status = session.get_bind().pool.status()

日志片段示例:

Pool size: 8  Connections in pool: 1 Current Overflow: -7 Current Checked out connections: 0
Pool size: 8  Connections in pool: 0 Current Overflow: -7 Current Checked out connections: 1
Pool size: 8  Connections in pool: 2 Current Overflow: -6 Current Checked out connections: 0
Pool size: 8  Connections in pool: 1 Current Overflow: -5 Current Checked out connections: 2

三个参数的含义与行为

1. Connections in pool

当前连接池中处于空闲状态、可被立即复用的数据库连接数量。这类连接未被任何业务任务占用,等待被借出使用。

2. Current Checked out connections

已经被业务任务借出、正在用于执行SQL查询等操作的连接数量。这类连接处于活跃状态,暂时无法被其他任务复用。

3. Current Overflow

该参数的计算公式为:当前总连接数(空闲+借出) - pool_size,反映连接数与常驻连接数的差值:

  • 正值:表示当前总连接数超出了pool_size,超出部分是临时创建的overflow连接(最多不超过max_overflow),这类连接归还后会被直接销毁,不会放回连接池。
  • 负值:表示当前总连接数还未达到配置的pool_size,负数的绝对值就是待创建的常驻连接数量。这是正常行为——SQLAlchemy连接池默认按需创建连接,不会在初始化时就创建所有pool_size的连接,只有当业务需要时才逐步新建,直到总连接数达到pool_size。

比如日志第一条:Connections in pool=1 + Checked out connections=0 = 总连接数1,减去pool_size=8得到-7,说明此时连接池仅创建了1个常驻连接,还差7个未创建。

当总连接数达到pool_size后,若有新的连接请求,才会创建overflow连接,此时Overflow变为正数;当overflow连接归还后,会被销毁,总连接数回落至pool_size,Overflow回到0。


内容的提问来源于stack exchange,提问作者dfhoag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:15:07