我最近接手了我公司正在进行的项目的另一部分,并发现我们的 RabbitMQ/Celery 设置中似乎存在内存泄漏。
我们的系统有 2Gb 的内存,在任何给定时间大约有 1.8Gb 可用。我们有多个任务处理大量数据并将它们添加到我们的数据库中。
当这些任务运行时,它们会消耗相当多的内存,很快我们的可用内存就会下降到 16Mb 到 300Mb 之间的任何地方。问题是,这些任务完成后,记忆就没有回来了。
我们正在使用:
- RabbitMQ v2.7.1
- AMQP 0-9-1 / 0-9 / 0-8(从 RabbitMQ startup_log 得到这一行)
- 芹菜 2.4.6
- Django 1.3.1
- amqplib 1.0.2
- django 芹菜 2.4.2
- 昆布 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