-
[Airflow] 에어플로우 worker 중단 현상 해결Airflow 2021. 11. 19. 22:24728x90
문제발생
모든 딥러닝 학습 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