셀러리 작업자 프로세스간에 이상한 상호 작용이 발생했습니다. 가능한 이유를 제안 해 주시겠습니까?셀러리 : 한 작업자 프로세스가 다른 작업자 프로세스의 실행을 차단합니까? 무엇을 공유 했습니까?
PPID PID
5892 5919 \_ /bin/bash -c sleep 10 && python manage.py makemigrations --noinput; python manage.py migrate --noinput; python manage.py initservice; celery -B -A workflows --workdir=/srv/workflows -l info --autoscale=2,30 -n UNIVERSE_NODE -Q workflows worker
5919 6168 \_ /usr/bin/python /usr/local/bin/celery -B -A workflows --workdir=/srv/workflows -l info --autoscale=2,30 -n UNIVERSE_NODE -Q workflows worker
6168 6180 \_ /usr/bin/python /usr/local/bin/celery -B -A workflows --workdir=/srv/workflows -l info --autoscale=2,30 -n UNIVERSE_NODE -Q workflows worker
6168 6185 \_ /usr/bin/python /usr/local/bin/celery -B -A workflows --workdir=/srv/workflows -l info --autoscale=2,30 -n UNIVERSE_NODE -Q workflows worker
6168 6186 \_ /usr/bin/python /usr/local/bin/celery -B -A workflows --workdir=/srv/workflows -l info --autoscale=2,30 -n UNIVERSE_NODE -Q workflows worker
6168 6187 \_ /usr/bin/python /usr/local/bin/celery -B -A workflows --workdir=/srv/workflows -l info --autoscale=2,30 -n UNIVERSE_NODE -Q workflows worker
6168 6188 \_ /usr/bin/python /usr/local/bin/celery -B -A workflows --workdir=/srv/workflows -l info --autoscale=2,30 -n UNIVERSE_NODE -Q workflows worker
... ...
경우에 작업자 프로세스 중 하나가 붙어 및 도착 ... 어떻게 든 차단 다른 모든 작업자 프로세스 :
나는 여러 작업자 프로세스와 셀러리 노동자가있다. 이 프로세스가 중지되면 다른 작업자 프로세스가 실행을 다시 시작합니다.
설계자는 작업자 (PID 6168을 가진 부모)와 메시지 대기열 + 결과 백엔드를 제외하고는 작업자 프로세스간에 공유 상태가 없어야합니다. 그러나 어떻게 든, 약간이있다.
이러한 교착 상태의 원인을 제안 할 수 있습니까?
나는 최신 Celery 3.1, RabbitMQ를 메시지 대기열로 사용하고 MongoDB를 결과 백엔드로 사용하고 있으며, 초기 early ack과 (분명히 동시 처리의 다중 처리 모드).