在增加了并行任务和最大调度程序线程的最大数量之后,我的工作流开始出现以下错误:
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: sorry, too many clients already
在阅读时,建议增加这些设置,目前这些设置具有以下值:
AIRFLOW__CORE__SQL_ALCHEMY_POOL_SIZE = 5
AIRFLOW__CORE__SQL_ALCHEMY_MAX_OVERFLOW = 10
文档将这些定义如下:
sql_alchemy_pool_size SqlAlchemy池大小是池中最大数据库连接数。 0表示没有限制。
sql_alchemy_max_overflow
池的最大溢出大小。结帐时数 连接达到pool_size中设置的大小,其他连接 将退还至此上限。当那些额外的连接 返回到池,它们将断开连接并被丢弃。它 然后是同时连接的总数 池将允许的是pool_size + max_overflow,以及 池允许的“睡眠”连接为pool_size。
因此,在给定pool_size(5)+ max_overflow(10)= 15的情况下,我似乎应该期望最多有15个连接。但是,显然,我误解了这一点,因为当我查看当前的18个活动任务的连接我看到37个连接。
postgres=# SELECT COUNT(*) FROM pg_stat_activity;
count
-------
37
(1 row)
如果该池允许的并发连接总数等于15,那么我目前如何有37个连接?
要获得同时连接的总数,以至于最多有100个连接(我的数据库配置为允许的最大连接数),数字应该是多少?