안녕하세요.
Airflow에서 작업이 Queued 상태로 무기한 대기하는 경우는 대부분 Celery 워커가 실제로 작업을 가져가지 못하거나, 동시 실행 제한(concurrency) 때문에 사용 가능한 워커 슬롯이 없는 상황에서 발생합니다.
우선 워커 상태를 확인해 보십시오.
Shell
airflow celery status
또는 Celery 자체에서 활성 워커를 확인할 수 있습니다.
Shell
celery -A airflow.providers.celery.executors.celery_executor inspect active
이후 Airflow 설정에서 parallelism, max_active_tasks_per_dag, max_active_runs_per_dag 값과 Celery Worker의 worker_concurrency 값을 확인해야 합니다. worker_concurrency가 너무 낮거나 모든 슬롯이 이미 사용 중이면 신규 작업은 계속 Queue에 남게 됩니다.
현재 워커의 동시 실행 수는 일반적으로 airflow.cfg 또는 환경 변수에서 확인할 수 있으며, 필요 시 값을 늘린 후 워커를 재시작할 수 있습니다.
Shell
airflow celery worker
또한 다음 명령으로 워커가 실제로 처리 중인 작업 수와 예약된 작업을 확인해 보시기 바랍니다.
Shell
celery -A airflow.providers.celery.executors.celery_executor inspect active
Shell
celery -A airflow.providers.celery.executors.celery_executor inspect reserved
만약 워커 슬롯이 충분한데도 작업이 계속 Queue 상태에 남아 있다면, Redis 또는 RabbitMQ 브로커 연결 문제, Scheduler 지연, 혹은 특정 DAG의 Pool 제한(pool, pool_slots)에 의해 작업이 보류되고 있을 가능성도 함께 점검해야 합니다.
유용한 정보가 되었기를 바랍니다. 문제를 이해하는 데 도움이 되었다면 답변을 채택해 주시면 감사하겠습니다. 추가 질문이 있으시면 언제든지 메시지를 남겨 주세요. 좋은 하루 되세요!
Domic Vo.