Недавно я принял еще одну часть проекта, над которым работает моя компания, и обнаружил, что, похоже, утечка памяти в нашей установке RabbitMQ/Celery.
Наша система имеет 2 ГБ памяти, с примерно 1,8 ГБ бесплатно в любой момент времени. У нас есть несколько задач, которые хрустят большие объемы данных и добавляют их в нашу базу данных.
Когда эти задачи выполняются, они потребляют довольно большой объем памяти, быстро падают в нашу доступную память в любом месте от 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-celery 2.4.2
- kombu 2.1.0
- Python 2.6.6
- erlang 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