芹菜prefork内存泄漏

时间:2015-11-17 18:24:12

标签: celery django-celery celery-task

我们使用以下命令使用Django运行Celery: python manage.py芹菜工人-Q some_queue -l INFO -n some_worker -concurrency = 1

流程就是这样 - (假设CELERYD_MAX_TASKS_PER_CHILD = 1): 1.运行芹菜时,会产生一个主进程(大约60MB RAM) 2.子进程立即分叉(也是60MB) 3.主进程从队列中提取任务并将其交给孩子 3.子进程完成处理任务,并由主进程终止,并释放内存 4.主进程现在从队列中拉出另一个任务,它的内存增加到72MB 5.子进程从主队列(也是72MB)分叉

......依此类推。

事实上,主进程永远不会重启,只有孩子才能重启。但是它所传递的每一条消息都会增加它的内存使用量,因此一段时间后我们就会耗尽内存。

我们尝试了以下设置无效:

CELERYD_PREFETCH_MULTIPLIER = 1

CELERY_ACKS_LATE = True
CELERYD_MAX_TASKS_PER_CHILD = 1

-Ofair

0 个答案:

没有答案
相关问题