admin管理员组

文章数量:1568418

现象

celery 在用rabbitmq集群当broker的时候,经常会出现rabbitmq某个节点内存爆满的问题。要知道,一旦rabbitmq节点内存爆满,触发内存报警,rabbitmq会自动堵塞所有连接,直到内存降下去。
按理说这样的策略也说的过去,毕竟不能内存满了还接收消息,但我的rabbitmq满了之后很难降下去(我的内存报警阈值是3G, 3G…),导致celery明明连接上了,就因为被堵塞,导致celery以为自己连接上了broker,其实并没有,所以一直报IOError,连接异常关闭。

问题追踪

修改celery?

一开始我以为是celery设置的问题,毕竟从rabbitmq管理界面来看,绝大部分都是celeryev开头的,celeryev是什么东西呢?
官方解释是这样的:celeryev is a simple curses monitor displaying task and worker history. You can inspect the result and traceback of tasks, and it also supports some management commands like rate limiting and shutting down workers.
意思是celeryev可以监控任务状态和执行结果,还支持其他的一些管理操作,类似flower.
celeryev开头的队列是celery自己创建的,为了发送事件方便监控捕捉。OK, 创建队列没有问题,毕竟我们也需要监控,但问题是这些队列怎么不会自行删除呢,应该有存活时间的设置才对。于是在cel

本文标签: 内存异常过程celeryRabbitMQ