인프런 커뮤니티 질문&답변

bluebamus님의 프로필 이미지

작성한 질문수

실리콘밸리 엔지니어와 함께하는 샐러리(Celery)

Task 에러를 Signal로 해결해 보기

child process에 lock/좀비 프로세스가 발생하면 어떻게 처리되나요?

24.07.05 16:58 작성

·

83

1

작업의 처리 결과가 언제 종료될지 모르기 때문에 timeout 등의 설정은 하지 않은 전제에서

child process에 작업을 수행하다가 lock이 발생하거나 이러한 문제로 좀비 프로세스가 되는 경우

celery가 처리하는 루틴이 있는지 알고 싶습니다.

답변 1

0

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

2024. 07. 06. 09:08

안녕하세요 bluebamus님,

Celery는 기본적으로 좀비 프로세스를 처리하기 위한 특정한 루틴을 제공하지 않지만, 작업이 제대로 종료되지 않거나 잠금(lock)으로 인해 문제가 발생하는 경우를 처리하기 위해 몇 가지 방법을 제공하고 있는데... timeout을 사용하지 않은 상태에서 방지할 수 있는 방법은 한계가 있을 수 있는데,

  • Celery 워커의 maxtasksperchild 옵션을 설정하여 각 워커가 일정 수의 작업을 처리한 후 종료되고 새롭게 시작되도록 만들 수 있는데, 이는 메모리 누수와 좀비 프로세스를 방지하는 데 유용할 듯 하네요.

  • 외부 모니터링 도구를 사용하여 Celery 워커의 상태를 모니터링하고, 좀비 프로세스가 발견되면 이를 처리하는 스크립트를 실행할 수도 있습니다. 예를 들어, Supervisord, Monit, Systemd 등을 사용하여 워커 프로세스를 관리할 수 있습니다.

 

도움이 되었을까요?

 

bluebamus님의 프로필 이미지
bluebamus
질문자

2024. 07. 06. 23:22

정보에 도움이 되었습니다 감사합니다.