Airflow Webserver가 먹통이 됐다.
프로세스를 확인해보니 Airflow Webserver 프로세스가 떠 있긴 한데, Airflow Web Interface를 담당하는 gunicorn
이 안 떠있다.
airflow-webserver.err
를 확인해보니, FileExistsError
, AlreadyLocked
Error가 발생하였다.
airflow-webserver-monitor.pid
를 찾을 수 없고, Lock 됐다고 한다.
airflow-webserver-monitor.pid
는 Airflow Webserver의 프로세스 ID 정보를 담고있는 파일로, Airflow Webserver 실행 시 자동 생성된다.
어? 그런데 airflow-webserver-monitor.pid
파일이 있다.
airflow-webserver-monitor.pid
파일을 확인해보니 원인을 파악할 수 있었다.
airflow-webserver-monitor.pid
파일에는 Airflow Webserver 프로세스 id가 1192
였다. 하지만 현재 실제 떠 있는 Airflow Webserver의 프로세스는 7183
이다.
결과적으로
airflow-webserver-monitor.pid
Process ID ≠ 실제 떠 있는 Airflow Webserver Process ID문제였다.
Airflow Webserver 프로세스가 종료될 때 airflow-webserver-monitor.pid
도 자동 삭제가 되는데 이 파일이 정상적으로 삭제가 되지 않았던 것 같다.
airflow-webserver-monitor.pid
파일을 삭제해주고, Airflow Webserver를 다시 실행한다.
현재 EC2를 켰을 때 Airflow가 자동으로 뜰 수 있도록 systemctl
로 서비스를 등록해준 상태이기 때문에 systemctl
명령으로 재시작했다.
Process ID를 다시 확인해보니 9205
로 airflow-webserver-monitor.pid
파일과 실제 실행되고 있는 Airflow Webserver Process ID가 일치됐다.
gunicorn
도 정상적으로 실행되는 것을 볼 수 있다.
Webserver도 정상적으로 실행된다.