-
[Airflow] 에어플로우 worker 중단 현상 해결Airflow 2021. 11. 19. 22:24
문제발생
모든 딥러닝 학습 DAG들이 실패해서 딥러닝 배포 Pipeline이 작동하지 않음.
DAG 내부의 실패 Task들이 모두 모델 학습 Task들이어서 워크스테이션에서 돌고 있는 worker 중단 현상을 의심함.
원인파악
1. 워크스테이션 접속 후 airflow worker process 확인
$ ps -ef |grep worker
⇒ worker가 죽어있는 것 확인
⇒ 만약 worker가 정상적으로 떠 있으면 다음과 같은 형태로 프로세스가 확인 되어야 함
2. worker를 nohup으로 돌리고 있으므로, nohup.out 파일에 남긴 마지막 로그 확인하기
# sudo find 위치 -이름 파일명 $ sudo find /data -name nohup.out
⇒ 여러경로에 여러개의 nohup.out 파일이 확인되어서 어떤 파일인지 알 수 없음.
⇒ 확인한 결과 예전 날짜의 파일들임.
문제해결
1. 추후에 동일한 에러가 발생했을 때 확인하기 쉽게 nohup.out의 이름을 변경하여 worker 재실행
$ nohup airflow worker -q {queue name} &> nohup_dl_dags.out &
queue 이름 지정 양식은 아래를 참고:
1) 딥러닝 학습 DAG의 모델링 task에 할당된 queue 이름 확인
2. 모델 학습 task들이 scheduled 상태에서 멈춰있음.
$ vi nohup_dl_dags.out # 마지막 명령어만 조회할 경우 $ tail -f nohup_dl_dags.out
⇒ port가 이미 사용중으로 나옴
https://stackoverflow.com/questions/45456234/running-airflow-worker-gives-error-address-already-in-use
⇒ 위 검색결과로 8793 port를 사용하는 프로그램 검색하기
$ sudo netstat -anp | grep 8793
LISTEN (PID)/name
⇒ PID로 해당 프로그램 찾기
$ ps aux |grep 17428(PID)
3. port 사용 중인 프로그램 강제 종료
$ kill -9 17428
BUT, 모델 학습 task들이 scheduled 상태에서 멈춰있음!
⇒ nohup.out 파일 조회
$ tail -f nohup_dl_dags.out
redis queue에 쌓여있는 Task들을 가져오지 못하는 상황으로 판단.
⇒ airflow main 서버에서 redis process 확인
$ ps -ef |grep redis
⇒ airflow db(mysql) 서버에서 redis process 확인
⇒ airflow main > security group에서 inbound rules에 허용 IP 주소 추가하기
워크스테이션이 회사 내부 망에서 private IP를 사용하고 있으므로,
회사 인터넷 주소를 6379 포트로 추가하기
해결완료!
- 이상 오늘의 삽질일기 끝!
여기저기 삽질도 해보고
날려도 먹으면서
배우는 게
결국 남는거다
- Z.Sabziller
반응형'Airflow' 카테고리의 다른 글
[Airflow] Task in the 'queued' state(feat. 에어플로우 중단 현상) (0) 2022.03.09 [Airflow] 에어플로우 worker 중단 현상 해결 Ver.2 (0) 2021.12.12 [Airflow] 에어플로우 DAG Dynamically Generate Serial Tasks (feat. 직렬화 처리) (0) 2021.09.24 [Airflow] 에어플로우 Main, MySQL 서버 IP 주소 변경으로 인한 Airflow woker 실행 문제 해결(Feat. Docker container) (0) 2021.09.07 [Airflow] Airflow ExternalTask Sensor 생성하기 (0) 2021.08.09