当使用芹菜和rabbitmq时,队列是否可能变得太大以至于所有东西都被锁定?

当使用芹菜和rabbitmq时,队列是否可能变得太大以至于所有东西都被锁定?,rabbitmq,celery,task-queue,Rabbitmq,Celery,Task Queue,我正在使用芹菜和rabbitmq制作一个类似以下内容的链: fetch -> parse -> write pages write pages部分发布自己的异步任务集,以并行方式编写每个单独的页面(如我的另一个问题所述:) 当我运行了很长一段时间后,我观察到它最终会停止。如果我重新启动芹菜,它会再次出现,但只有在执行另外60个左右的任务后,它才会再次停止 我注意到,当队列大小达到400k多一点时,就会发生这种情况: fast@build1 ~/dev/content-admin $

我正在使用芹菜和rabbitmq制作一个类似以下内容的链:

fetch -> parse -> write pages
write pages
部分发布自己的异步任务集,以并行方式编写每个单独的页面(如我的另一个问题所述:)

当我运行了很长一段时间后,我观察到它最终会停止。如果我重新启动芹菜,它会再次出现,但只有在执行另外60个左右的任务后,它才会再次停止

我注意到,当队列大小达到400k多一点时,就会发生这种情况:

fast@build1 ~/dev/content-admin $ sudo rabbitmqctl list_queues
Listing queues ...
build1.prod2.ec2.cmg.net.celery.pidbox  0
celery  433410
...done.
我认为现在的情况是,队列中充满了这些“写页面”任务,这些任务将向队列中添加更多的项目,一旦“满”,它就永远没有机会执行这些新添加的任务

我曾经尝试过临时修改“写页面”任务以立即返回(不做任何事情),这似乎已经清除了拥塞并启用了所有~400000页的输出。然而,我并不是100%地理解为什么这样做会奏效

有没有一个上限是由兔子或芹菜强加的?它是基于可用内存的吗?或者它是可配置的?最后一点:我如何更好地管理任务,以避免这种情况发生

redis更适合我的工作吗

我认为如果有更多的“写页面”工作人员会有所帮助,但我也想以某种方式强制“写页面”任务优先


我将非常感谢您的帮助。谢谢大家!

RabbitMQ性能可能会降低,如果内存已满,并且发布服务器正在避免这种情况。将允许您更轻松地诊断问题。您需要查找内存和/或磁盘的高水位线,这将帮助您测量容量