我在 centos 7.5 虚拟机上部署了最新的气流,并在 postgresql 实例上更新了 postgres 数据库的sql_alchemy_conn
和result_backend
,并将我的执行器指定为CeleryExecutor
。根本没有启用任何 dag,甚至没有启动气流调度程序,我看到大约每 5 秒建立一次连接,然后准备运行SELECT 1
和SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
。
当启动调度程序并打开 dags 时,短期连接的数量会急剧增加。有谁知道原因吗?这是心跳检查还是任务状态检查?随着气流中的sql_alchemy_pool_enabled = True
.cfg这些连接不应该更长的寿命吗?有没有一个日志,我可以查看这些亚秒级生命的连接的来源?
用于参考的配置值
executor = CeleryExecutor
sql_alchemy_conn = postgres://..../db1
sql_alchemy_pool_enabled = True
sql_alchemy_pool_size = 5
sql_alchemy_max_overflow = 0
parallelism = 32
dag_concurrency = 16
max_active_runs_per_dag = 16
worker_concurrency = 16
broker_url = redis://...
result_backend = db+postgresql+psycopg2://.../db2
job_heartbeat_sec = 5
scheduler_heartbeat_sec = 5
将AIRFLOW__CORE__SQL_ALCHEMY_POOL_PRE_PING
设置为False
。
在每个连接池签出开始时检查连接。通常,这是一个简单的语句,例如SELECT 1
.
更多信息请见:https://docs.sqlalchemy.org/en/13/core/pooling.html#disconnect-handling-pessimistic