【问题标题】:Celery: one worker process blocks execution of other worker processes? Shared what?芹菜:一个工作进程阻止其他工作进程的执行?分享了什么?
【发布时间】:2016-10-17 12:04:19
【问题描述】:

我在 Celery 工作进程之间体验到一种奇怪的交互,我认为它是独立的。您能提出一个可能的原因吗?

我有一个具有多个工作进程的 celery worker:

 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 和(显然,并发的多处理模式)。

【问题讨论】:

    标签: django rabbitmq celery


    【解决方案1】:

    找到此行为的原因:http://docs.celeryproject.org/en/latest/whatsnew-3.1.html#caveats。对于长时间运行的进程,预取策略可能会使一个进程阻塞其他进程。

    为防止这种情况,请使用-Ofair 标志:

    $ celery -A proj worker -l info -Ofair

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 2014-11-01
      • 2017-04-14
      相关资源
      最近更新 更多