故障排除¶
模糊的任务失败¶
任务状态被外部更改¶
任务状态可能因执行器以外的组件而改变,这有多种潜在原因,在查看任务实例或调度器日志时可能会引起困惑。
以下是一些可能导致任务状态因执行器以外的组件而改变的示例场景
如果任务的 DAG 在 worker 上解析失败,调度器可能会将任务标记为失败。如果确认是此原因,请考虑增加 core.dagbag_import_timeout 和 dag_processor.dag_file_processor_timeout 的值。
如果任务在队列中等待的时间超过 scheduler.task_queued_timeout 指定的时间,调度器会将其标记为失败。
如果任务实例心跳超时,调度器会将其标记为失败。
用户在 Airflow UI 中将任务标记为成功或失败。
外部脚本或进程使用 Airflow REST API 更改了任务的状态。
TaskRunner 被终止¶
有时,Airflow 或某些相邻系统会终止任务实例的 TaskRunner
,导致任务实例失败。
以下是一些可能导致此类事件的示例
DAG 运行超时,在 DAG 定义中通过
dagrun_timeout
指定。Airflow worker 内存不足 - 通常,内存不足的 Airflow worker 会收到 SIGKILL 信号,调度器会因没有心跳而将相应的任务实例标记为失败。然而,在某些情况下,Airflow 会在此发生之前终止任务。