1. Airflow Level
parallelism
- 단일 Airflow 환경 내에서 동시에 실행될 수 있는 최대 task의 수
- 이 설정을 32로 설정하면 모든 DAG에서 한 번에 32개 이하의 task를 실행할 수 있다.
- Task가 오랫동안 queuing 상태라면 이 값을 늘려야 한다.
- 기본값은 32
max_active_tasks_per_dag
- 1개의 DAG 마다 한 번에 스케줄링 될 수 있는 최대 task의 수
- 이 설정을 너무 높게 설정하면, 하나의 DAG가 병렬 처리 또는 풀에서 사용 가능한 slot을 너무 많이 독점하여 다른 DAG의 task가 대기 상태에 빠질 수 있다.
- DAG 레벨에서
concurrency
와 동일
- 기본값은 16
max_active_runs_per_dag
- 1개의 DAG에서 동시에 실행될 수 있는 최대 DAG 실행의 수
- DAG의 schedule interval이 1시간이고, 완료하는 데 1시간 이상 걸리는 경우, 이 설정이 없으면 이전 실행이 아직 완료되지 않았더라도 새 실행이 시작된다.
- 하지만
depends_on_past
옵션을 true로 주게되면 과거에 실행되어야 하는 것들이 실행되고 난 다음에 실행되어야 해서 새 실행을 막을 수 있다. (depends_on_past
옵션이 더 우위에 있음)
- 기본값은 16
2. DAG Level
concurrency
max_active_tasks
- 1개의 DAG에서 동시에 실행될 수 있는 최대 task의 수
- 이 설정이 정의되지 않은 경우 Airflow 환경 설정값인
max_active_tasks_per_dag
가 적용된다.
max_active_runs
- 1개의 DAG에서 동시에 실행될 수 있는 최대 DAG 실행의 수
- 이 설정이 정의되지 않은 경우 Airflow 환경 설정값인
max_active_runs_per_dag
가 적용된다.
3. Task Level
max_active_tis_per_dag
- 1개의 DAG에서 동일한 task를 모든 DAG 실행에서 동시에 실행될 수 있는 최대 횟수
- 한 번에 여러 task에서 수정해서는 안되는 경우 이 값을 1로 설정 (e.g., 데이터를 테이블에 추가하는 task)
pool
- Task에 사용할 수 있는 pool의 사이즈
- 임의의 task group의 동시 인스턴스의 수를 제한한다.
4. DAG & Task Level
depends_on_past
- 이전 날짜의 task 인스턴스 중에서 동일한 task 인스턴스가 실패한 경우 실행되지 않고 대기한다.
- Upstream의 task 인스턴스가 이전 날짜에서 성공한 경우 그대로 실행된다.
wait_for_downstream
- 이전 날짜의 task 인스턴스 중 하나라도 실패한 경우 해당 DAG는 실행되지 않고 대기한다.
depends_on_past
옵션을 포함하는 더 엄격한 옵션
- 이전 날짜의 그 어떤 task일지라도 실패한 경우 실행되지 않는다.