1. webserver에서 "Some workers seem to have died and gunicorn did not restart them as expected" 에러 발생하며 웹페이지가 보여지지 않을때
원인: webserver에 메모리 부족으로 인하여 gunicorn worker가 kill 됨
해결책:
- airflow.cfg 의
[webserver]
섹션에workers
의 갯수를 줄인다(default 4).
혹은 도커 컨테이너 생성시 environment에AIRFLOW__WEBSERVER__WORKERS
를 지정한다. - webserver의 사용 메모리를 키운다.
필자는 docker-compose를 이용하여 airflow 환경을 구성중이다. 이때 mem_limit을 이용하여 메모리를 조절할 수 있다.
docker-compose 예시
## docker-compose.yaml의 일부
webserver:
container_name: airflow_webserver
build: .
depends_on:
- postgres
- redis
environment:
- LOAD_EX=n
- FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho=
- EXECUTOR=Celery
- AIRFLOW__WEBSERVER__WORKERS=3
volumes:
- ./dags:/usr/local/airflow/dags
ports:
- "8080:8080"
command: webserver
healthcheck:
test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
interval: 30s
timeout: 30s
retries: 3
## 메모리 조절
mem_limit: "4g"
기타
webserver의 worker 사이즈를 줄이면 여러 유저가 접근시 웹페이지가 느려질수 있다. 따라서 가능하다면 메모리 조절로 해결하는것이 좋다.
'OpenSource > Airflow' 카테고리의 다른 글
[Airflow] schedule_interval을 한국시간으로 설정하기 (0) | 2020.03.26 |
---|---|
[Airflow] template 기본값 지정 (0) | 2020.03.19 |
[Airflow] Custom Operator에서 Jinja template 값 치환 실패시 해결방법 (0) | 2020.03.19 |
[Airflow] dag 실행시 arguments를 전달하여 실행하는 방법 (0) | 2020.03.19 |
[Airflow] Multi Server Cluster 환경에서 dag 파일은 모든 서버에 배포해야할까? (0) | 2020.02.24 |