Что делать, если 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 порядок как частые причины.