[Airflow] 에어플로우 SIGTERM ERROR 해결 방법 (Error messege : sending the signal signals.sigterm)

Hello! ·2023년 1월 6일
0

Airflow

목록 보기
2/3
post-thumbnail


에어플로우 SIGTERM Error로 Dag가 실행 중에 중단되었을때 해결하는 방법을 정리한 내용입니다.
원인은 크게 4가지로 Dag run timeout, OOM, CPU usage, Mini scheduler로 나뉘며 각각에 대한 해결 방법을 정리하였습니다.



원인1. DAG run timeout


  • dagrun_timeout 값이 낮은 원인
  • 타임아웃이 나기 전에 Dag Run이 얼마나 오래 걸리는지에 대한 정의를 보통 함
  • 따라서 타임아웃이 예정된 DagRun에 영향을 받는지 확인해봐야함
  • 해결 방법
    • Airflow UI로 Failed DagRun duration 확인하여
      Dag파일(.py)의 dagrun_timeout을 그 이상의 값으로 설정
    • 아래 dagrun_timeout 의 value 수정


원인2. Running out of memory


  • OOM(Out of memory) 현상으로 발생되는 원인일 수 있음
  • 에어플로우의 개발 환경에서 메모리가 충분하지 않으면 발생할 수 있는 에러로 메모리 사용량을 높이는 요소 조정
  • 해결 방법
    • max_active_tasks_per_dag 의 value 조정
    • parallelism 의 value 조정


원인3. Metadata Database draining the CPU


  • 메타데이터 데이터베이스의 CPU사용량이 100%인 경우
  • 해결 방법
    • job_heartbeat_sec 의 값을 조정해야함

    • airflow.cfg의 job_heartbeat_sec 수정 (default : 5 seconds)

      vim airflow.cfg
      
      # 아래 값 확인 후 변경 
      [scheduler]
      job_heartbeat_sec = 30 



원인4. Disable “Mini Scheduler”


  • 기본적으로 퍼포먼스를 개선하기 위해서 task supervisor process가 "미니 스케줄러"를 수행하여 동일한 DAG의 더 많은 작업을 예약함
  • 이 설정을 그대로 두면 동일한 DAG의 작업이 더 빨리 실행되지만 경우에 따라 다른 dag에 영향을 미침
  • 해결방법
    • airflow.cfg의 schedule_after_task_execution 수정 (default : True)

      [scheduler]
      schedule_after_task_execution = False


profile
Let's study

0개의 댓글