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

使用远程数据库时Apache Airflow Scheduler挂起问题求助

排查与解决方案建议

1. 调整MySQL 8.3的连接超时参数

远程网络环境下,MySQL默认的超时设置可能导致Airflow Scheduler的连接在DAG运行时被强制断开:

  • 编辑MySQL配置文件(my.cnf/my.ini),修改以下参数:
    • wait_timeout = 86400
    • interactive_timeout = 86400
    • net_read_timeout = 300
    • net_write_timeout = 300
  • 重启MySQL服务后,执行SELECT @@wait_timeout, @@interactive_timeout;验证参数生效

2. 检查网络策略与防火墙规则

基础连接正常不代表DAG运行时的并发请求不会被拦截:

  • 远程VM防火墙(如firewalld/ufw)需开放3306端口给Airflow Scheduler所在的OpenShift节点IP段,避免临时连接被阻断
  • 给OpenShift添加宽松的出站网络策略测试:
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: allow-scheduler-mysql-access
    spec:
      podSelector:
        matchLabels:
          app: airflow-scheduler
      policyTypes:
      - Egress
      egress:
      - to:
        - ipBlock:
            cidr: <远程VM_IP/32>
        ports:
        - protocol: TCP
          port: 3306
    

3. 优化Airflow数据库连接池配置

远程网络延迟可能导致连接池耗尽,通过环境变量调整配置(适配OpenShift部署):

  • 设置以下环境变量:
    • AIRFLOW__DATABASE__SQL_ALCHEMY_POOL_SIZE=15
    • AIRFLOW__DATABASE__SQL_ALCHEMY_MAX_OVERFLOW=25
    • AIRFLOW__DATABASE__SQL_ALCHEMY_POOL_RECYCLE=1800
    • AIRFLOW__DATABASE__SQL_ALCHEMY_POOL_PRE_PING=True

4. 启用Scheduler详细日志定位问题

默认日志级别无法捕捉深层异常:

  • 给Scheduler添加环境变量AIRFLOW__LOGGING__LOG_LEVEL=DEBUG
  • 实时查看日志:oc logs -f <airflow-scheduler-pod-name>,重点关注DAG触发后的数据库交互报错信息

5. 验证MySQL驱动版本兼容性

Airflow 2.8.3要求mysqlclient>=2.1.0,过低版本可能适配MySQL 8.3存在问题:

  • 进入Scheduler Pod:oc exec -it <airflow-scheduler-pod-name> -- bash
  • 执行pip show mysqlclient检查版本,若低于要求则升级:pip install mysqlclient==2.2.5

6. 检查远程MySQL的资源瓶颈

远程VM的资源不足可能导致数据库无响应:

  • 启用MySQL慢查询日志:slow_query_log=1、long_query_time=2,排查耗时过长的查询
  • 监控VM系统资源:用top/htop查看CPU、内存使用率,iostat检查磁盘IO负载

内容的提问来源于stack exchange,提问作者Hasanen A. Sahib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 03:42:20