작성
·
113
1
작업의 처리 결과가 언제 종료될지 모르기 때문에 timeout 등의 설정은 하지 않은 전제에서
child process에 작업을 수행하다가 lock이 발생하거나 이러한 문제로 좀비 프로세스가 되는 경우
celery가 처리하는 루틴이 있는지 알고 싶습니다.
답변 1
0
안녕하세요 bluebamus님,
Celery는 기본적으로 좀비 프로세스를 처리하기 위한 특정한 루틴을 제공하지 않지만, 작업이 제대로 종료되지 않거나 잠금(lock)으로 인해 문제가 발생하는 경우를 처리하기 위해 몇 가지 방법을 제공하고 있는데... timeout을 사용하지 않은 상태에서 방지할 수 있는 방법은 한계가 있을 수 있는데,
Celery 워커의 maxtasksperchild
옵션을 설정하여 각 워커가 일정 수의 작업을 처리한 후 종료되고 새롭게 시작되도록 만들 수 있는데, 이는 메모리 누수와 좀비 프로세스를 방지하는 데 유용할 듯 하네요.
외부 모니터링 도구를 사용하여 Celery 워커의 상태를 모니터링하고, 좀비 프로세스가 발견되면 이를 처리하는 스크립트를 실행할 수도 있습니다. 예를 들어, Supervisord, Monit, Systemd 등을 사용하여 워커 프로세스를 관리할 수 있습니다.
도움이 되었을까요?
정보에 도움이 되었습니다 감사합니다.