Назад к подготовке

Что делать, если Airflow DAG тормозит или зависает

Что вы делаете, когда Airflow DAG-и тормозят, зависают или не укладываются в scheduled window?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Сначала отделите задержку scheduler/очереди от узкого места выполнения. Посмотрите историю duration, логи, ресурсы, объём данных, retries и внешние зависимости; затем оптимизируйте IO, shuffle/joins, partitioning, parallelism, timeouts, идемпотентные retries и freshness alerts.

Полный разбор

Начинать нужно с фактов: какие tasks стали медленнее, где queue time, где execution time, что в scheduler/worker logs, какие CPU/RAM/disk/network/GPU metrics, не вырос ли объем данных и не появилась ли внешняя задержка. Часто проблема не в Airflow, а в Spark job, базе, object storage, API или выросшем input.

Дальше проверяем форму вычислений: не читаем ли всю историю вместо incremental slice, не фильтруем ли после большого join, нет ли skew, лишних shuffle, маленьких файлов, non-idempotent retries или зависших sensors. Исправления: partitioning, predicate pushdown, caching reused data, batch/chunk parallelism, resource pools, retries/timeouts и backfill policy.

Для надежности нужны SLA/freshness alerts, row-count checks, task duration alerts, runbook и owner. Если DAG уже не помещается в окно даже после оптимизации, нужно либо split/staged publish, либо пересмотреть product freshness requirement.

Теория

Airflow debugging разделяет scheduler delay, execution bottleneck, data growth и dependency failures.

Типичные ошибки

  • Сразу добавлять ресурсы без локализации bottleneck.
  • Игнорировать queue time и retries.
  • Мониторить success DAG-а, но не freshness результата.

Как отвечать на собеседовании

  • Начните с logs, duration history и resource metrics.
  • Назовите data-volume drift и join/filter порядок как частые причины.