【问题标题】:rabbitmq+celery memory leak?rabbitmq+celery 内存泄漏?
【发布时间】:2011-03-28 18:22:04
【问题描述】:

我已经愉快地在生产中运行了 celery+rabbitmq+django 一个月左右。昨天,我决定从 celery 2.1.4 升级到 2.2.4,现在 rabbitmq 正在失控。运行一段时间后,我的节点不再被 evcam 识别,并且 beam.smp 的内存消耗开始增加......慢慢地(100+%的 CPU 使用率)。

我可以运行rabbitmqctl list_connections 并查看没有任何异常(只有我的一个测试节点)。我可以在rabbitmqctl list_queues -p <VHOST> 中看到除了来自我的测试节点的心跳之外没有任何消息。如果我让进程继续运行几个小时,它就会使机器最大化。

我尝试使用camqadm 清除各种队列,但无济于事,stop_app 只是挂起。我发现“修复”它的唯一方法是kill -9beam.smp(以及所有相关进程)和我的rabbitmq服务器上的force_reset。

我不知道如何进行调试。就新消息等而言,似乎没有任何可疑之处。以前有人反对过吗?有任何想法吗?我还应该查看哪些其他信息?

【问题讨论】:

  • 你也升级了rabbitmq吗?我在 2.2.x 中也有类似的症状,所以我们降级到 RabbitMQ 2.1.1 并且没有任何问题。
  • 我降级到 2.1.1,问题就消失了。知道为什么吗?
  • 出现症状时您运行的是什么版本?
  • 我用 rabbitmq 2.2.0 运行 celery 2.2.4。我一直在使用 celery 2.1.4 和相同版本的兔子,没有任何问题。

标签: django rabbitmq celery


【解决方案1】:

celery 开发者3个月前告诉我,RabbitMQ 2.1.1 之后的版本受到内存泄漏的影响,cpu 达到峰值。 我还在用2.1.1版本,没有这个问题

http://www.rabbitmq.com/releases/rabbitmq-server/v2.1.1/

celery 2.2.4 版本也确实引入了一些内存问题,但是如果你更新到 celery 2.2.5 大部分都解决了。

http://docs.celeryproject.org/en/v2.2.5/changelog.html#fixes

希望对你有帮助

【讨论】:

    【解决方案2】:

    可能没有帮助,但我们最近在 Java 虚拟机中发现了与用于监控垃圾收集的扩展相关的内存泄漏。可能是您的心跳监视器正在触发这些方法,从而导致本机内存泄漏。

    这里描述了这个问题:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7066129

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-18
      • 2013-11-24
      • 2012-09-23
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      相关资源
      最近更新 更多