【问题标题】:RabbitMQ/Celery/Django Memory Leak?RabbitMQ/Celery/Django 内存泄漏?
【发布时间】:2012-04-24 16:58:43
【问题描述】:

我最近接手了我公司正在进行的项目的另一部分,并发现我们的 RabbitMQ/Celery 设置中似乎存在内存泄漏。

我们的系统有 2Gb 的内存,在任何给定时间大约有 1.8Gb 可用。我们有多个任务处理大量数据并将它们添加到我们的数据库中。

当这些任务运行时,它们会消耗相当多的内存,很快我们的可用内存就会下降到 16Mb 到 300Mb 之间的任何地方。问题是,这些任务完成后,内存并没有回来。

我们正在使用:

  • RabbitMQ v2.7.1
  • AMQP 0-9-1 / 0-9 / 0-8(从 RabbitMQ 启动日志)
  • 芹菜 2.4.6
  • Django 1.3.1
  • amqplib 1.0.2
  • django-celery 2.4.2
  • kombu 2.1.0
  • Python 2.6.6
  • 二郎5.8

我们的服务器正在运行 Debian 6.0.4。

我是此设置的新手,因此如果您需要任何其他信息来帮助我确定此问题的根源,请告诉我。

所有任务都有返回值,所有任务都有ignore_result=True,CELERY_IGNORE_RESULT设置为True。

非常感谢您的宝贵时间。

我当前的配置文件是:

CELERY_TASK_RESULT_EXPIRES = 30
CELERY_MAX_CACHED_RESULTS = 1
CELERY_RESULT_BACKEND = False
CELERY_IGNORE_RESULT = True
BROKER_HOST = 'localhost'
BROKER_PORT = 5672
BROKER_USER = c.celery.u
BROKER_PASSWORD = c.celery.p
BROKER_VHOST = c.celery.vhost

【问题讨论】:

  • 您找到解决方案了吗?
  • 我也遇到了同样的问题,请问您发现是什么问题了吗?
  • 老实说它刚刚消失了,所以我会确保服务器上的所有内容都已更新。真的很抱歉,我不能在这方面提供更多帮助。直到今天我仍然很难过......

标签: django rabbitmq celery amqp django-celery


【解决方案1】:

我几乎可以肯定您正在使用 DEBUG=True 运行此设置,这会导致内存泄漏。

查看此帖子:Disable Django Debugging for Celery

如果有帮助,我会发布我的配置。

settings.py

​​>
djcelery.setup_loader()
BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_VHOST = "rabbit"
BROKER_USER = "YYYYYY"
BROKER_PASSWORD = "XXXXXXX"

CELERY_IGNORE_RESULT = True
CELERY_DISABLE_RATE_LIMITS = True
CELERY_ACKS_LATE = True
CELERYD_PREFETCH_MULTIPLIER = 1
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
CELERY_ROUTES = ('FILE_WITH_ROUTES',)

【讨论】:

  • 对于 Django,DEBUG 设置为 False,抱歉,我们也试过了。
  • 除此之外我真的说不出来。我会用我的配置编辑我的帖子,也许它可以节省一天嘿
【解决方案2】:

您可能会在librabbitmq 中点击this issue。请检查 Celery 是否使用librabbitmq>=1.0.1

一个简单的尝试是:pip install librabbitmq>=1.0.1

【讨论】:

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