我有一个包含三个主机的生产环境,每个主机运行4个芹菜进程绑定到不同的队列。我正在使用rabbitmq作为经纪人和最新的芹菜版本(3.1.23)。
正常系统负载发布和消耗约150条消息/秒。 rabbitmq网络吞吐量约为30 Mb / sec
我没有为芹菜节点设置唯一的名称,并且收到了警告,例如:
A node named celery@export_000 is already using this process mailbox!
通过将%h添加到hostname变量为每个芹菜进程提供唯一名称后,警告已解决,但由于内存和网络使用率非常高,系统无法使用。
芹菜进程的内存使用量达到峰值(4GB - > 30GB),即使对于没有执行任何任务的进程,机器上的可用内容也是如此。 尽管没有异常的队列利用率,但兔子主机上的网络峰值达到0.5 Gb /秒。如果有的话,芹菜消费者不会消费任何消息。
消费者似乎忙于互相同步(根据日志)并偶尔执行一些任务。
恢复到非唯一节点名称立即解决了问题。
相关芹菜ticket
任何可能导致这种情况的想法? 芹菜节点同步过程能以某种方式与它相关吗?