故障排除¶
难以捉摸的任务失败¶
任务状态被外部更改¶
任务的运行状态可能被执行器以外的组件更改,这有许多潜在原因,在查看任务实例或调度器日志时可能会引起一些困惑。
以下是一些可能导致任务状态被执行器以外的组件更改的示例场景:
如果任务的DAG在工作节点上解析失败,调度器可能会将该任务标记为失败。如果确认此情况,请考虑增加 core.dagbag_import_timeout 和 core.dag_file_processor_timeout。
如果任务排队时间超过scheduler.task_queued_timeout,调度器会将任务标记为失败。
如果一个任务变成僵尸进程,它将被调度器标记为失败。
用户在Airflow UI中将任务标记为成功或失败。
一个外部脚本或进程使用了Airflow REST API来更改任务的状态。
LocalTaskJob 被终止¶
有时,Airflow 或某些相邻系统会终止任务实例的 LocalTaskJob,导致任务实例失败。
以下是一些可能导致此类事件的示例:
DAG运行超时时间,由DAG定义中的
dagrun_timeout参数指定。Airflow工作进程内存耗尽 - 通常情况下,内存耗尽的Airflow工作进程会收到SIGKILL信号并被调度器标记为僵尸进程且失败。但在某些情况下,Airflow会在这种情况发生前终止任务。