2011-07-01 6 views
6

셀러리 대몬과 관련하여 문제가 있습니다. 우리는 변경 사항을 푸시 할 때마다 패브릭 배치 스크립트를 사용하여 데몬을 재시작합니다. 그러나 어떤 이유로이 문제는 심각한 문제를 야기합니다.셀러리 데몬 관련 문제

배포 스크립트가 실행될 때마다 셀러리 프로세스는 일부 의사 정지 상태가됩니다. 그들은 (안타깝게도) rabbitmq로부터 작업을 여전히 소비하지만 실제로 아무것도하지는 않을 것입니다. 혼란스럽게도 간단한 검사를 통해이 상태에서 모든 것이 "괜찮아"보인다는 것을 알 수 있으며 celeryctl 상태는 한 노드를 온라인 상태로 표시하고 ps aux | grep celery는 2 개의 실행중인 프로세스를 보여줍니다.

그러나 시도하는 것은 수동으로 중지 다음과 같은 오류가 발생 /etc/init.d/celeryd 실행 :

start-stop-daemon: warning: failed to kill 30360: No such process 

celeryd 시작을 실행하려고이 상태가 제대로 작동하려면 나타나지만에서 실제로 수행하는 동안 아무것도. 이 문제를 해결할 수있는 유일한 방법은 실행중인 셀러리 프로세스를 수동으로 종료 한 다음 다시 시작하는 것입니다.

여기에 어떤 아이디어가 있습니까? 우리는 또한 완전한 확인을하지는 못했지만 문제가 며칠 (현재 활동이없는 상태에서 현재 테스트 서버 임)이 지나면 전개되지 않고 자체적으로 문제가 발생한다고 생각합니다.

+0

우리는 배포 스크립트도 사용하지만 패브릭을 사용하지는 않습니다. 파이썬에서 celeryd restart 명령을 실행하면 모든 것이 올바르게 작동합니다. 우분투 버전의 celeryd.sh 스크립트의 일부 문제를 알고 있는데, 실행중인 프로세스를 얻는 데 필요한 bash 명령 때문에 10.10 이하입니다. 어떤 OS에서 실행하고 있습니까? 셀러리 버전은 무엇입니까? –

+0

스크립트가 데몬을 정확히 다시 시작하는 방법은 무엇입니까? 그것은 단지'kill -9' 또는 유사하게 발사되는 것입니까? –

+0

init.d 스크립트의 stop 명령을 트리거합니다. 이것은 셀러리의 github contrib 파일에서 사용할 수있는 포함 된 init.d 스크립트입니다. 그다지 멈추지 말고 다시 시작하는 대신에 어둡게 찍었습니다. init.d 스크립트는 start-stop-daemon 명령을 호출합니다 – John

답변

5

나는 당신의 설정이 무엇이 아픈지 알 수 없다. 그러나 나는 슈퍼 바이저를 항상 셀 룰리를 사용했다. 어쩌면 문제는 신생과 관련이 있을까? 그럼에도 불구하고, 나는 supervisord 위에 달리면서 샐러리를 경험 한 적이 없다.

좋은 측정을 위해, 여기 셀러리에 대한 샘플 관리자의 설정입니다 : 내 공장 스크립트

[program:celeryd] 
directory=/path/to/project/ 
command=/path/to/project/venv/bin/python manage.py celeryd -l INFO 
user=nobody 
autostart=true 
autorestart=true 
startsecs=10 
numprocs=1 
stdout_logfile=/var/log/sites/foo/celeryd_stdout.log 
stderr_logfile=/var/log/sites/foo/celeryd_stderr.log 

; Need to wait for currently executing tasks to finish at shutdown. 
; Increase this if you have very long running tasks. 
stopwaitsecs = 600 

다시 시작 celeryd는 다음 sudo supervisorctl restart celeryd을 발행하는 것만 큼 간단합니다.