Airflow2搭配MySQL5.7使用LocalExecutor运行卡顿且报通信包读取错误
Airflow对接MySQL出现断连与UI卡顿问题解决方案
- 修正数据库驱动依赖:卸载当前使用的非官方MySQL驱动,安装Airflow官方推荐的
mysql-connector-python驱动,多数连接通信报错是驱动版本不兼容导致的。 - 调整SQL Alchemy连接配置:
- 连接字符串末尾追加
?charset=utf8mb4参数,避免编码异常引发的连接断连 - 新增
sql_alchemy_pool_pre_ping = True配置,启用连接可用性预校验,避免Airflow使用被MySQL提前回收的无效连接 - 将
sql_alchemy_pool_recycle调整为1800,该参数值必须小于MySQL侧wait_timeout的配置值,不要设置过大 - 依据部署的并发规模调整
sql_alchemy_pool_size到10~20区间,默认连接池容量过小会导致高并发下连接排队,引发UI响应变慢
- 连接字符串末尾追加
- 修正MySQL侧配置:
- 之前仅调整
interactive_timeout无效,该参数仅对交互式连接生效,需同步调整wait_timeout为3600 - 新增调整
net_read_timeout=60、net_write_timeout=120,避免大查询场景下连接被提前断开
- 之前仅调整
- 优化Scheduler配置:
- 调优
scheduler_heartbeat_sec到5~10秒区间,避免心跳频率过高导致数据库请求量过大 - 调低
max_dagruns_to_process、parsing_processes参数值,降低Scheduler单次查询数据库的数据量,缓解数据库压力
- 调优
- 排查容器网络问题:
- 若使用Docker桥接网络部署,可测试Airflow组件容器与MySQL容器间的网络延迟与丢包率,部分场景下Docker桥接网络不稳定会引发连接异常,可切换为Host网络或使用宿主机IP访问MySQL服务验证
- 版本适配校验:
- 若使用2.0以下的旧版本Airflow,建议升级到2.2.3以上的稳定版本,旧版本存在Scheduler心跳逻辑缺陷,会频繁创建销毁数据库连接引发断连报错
内容的提问来源于stack exchange,提问作者Anum Sheraz
相关产品推荐
相关产品推荐

