请教一个 celery 的 worker 进程越来越多的问题

2022 年 6 月 27 日
 longmeier90
我用 django 项目 配置了 celery ,因为 16 个队列,起了 6 个 worker 去消耗。但是我发现 celery 的 worker 数量会一直自动增加,不知道是为什么,更要命的是内存占用挺大的。服务器都报警了,我把 celery-worker 进程结束掉,内存就会降下来。celery-worker 我是用 supervisor 去启动的。

django/celery-config 文件配置

worker_concurrency = 6
celeryd_concurrency = 6
# 每个 worker 最多执行 10KB 任务被销毁, 可以防止内存泄露
worker_max_tasks_per_child = 40
# 单个任务的最大运行时间
task_time_limit = 30 * 60

supervisord/celry.ini


directory=/data/code/prd/bolin/src
command=/data/code/prd/bolin/env/bin/celery -A config worker --concurrency=6  -l INFO
user=pyer
autostart=true
autorestart=true
stopsignal=QUIT
stopwaitsecs=60
stopasgroup=true
killasgroup=true
2188 次点击
所在节点    Celery
5 条回复
lsdvincent
2022 年 6 月 27 日
设置个 --autoscale=4,2 最大最小 试试?
julyclyde
2022 年 6 月 27 日
是不是有些任务卡住了没有执行完毕啊?
longmeier90
2022 年 6 月 27 日
@lsdvincent worker_max_tasks_per_child = 40 应该是这个配置导致的,我把它去掉就没有问题啦。这个是让它自动销毁,然后启动新的 worker ,没想到没有销毁就启动新的 worker 啦
bbbb
2022 年 6 月 28 日
我用 mq+celery 的出现的是,任务过多,扭转不过来,会出现大量重复任务,导致 cpu 干满。查了资料,各种设置都没解决,最终解决办法任务不重要,停机,删除队列中所有任务。不重要的任务就没有花过多时间去纠结。刚好 celery 符合我的任务场景,是又爱又恨。
julyclyde
2022 年 7 月 1 日
@longmeier90 那你应该研究一下为什么没有销毁啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862394

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX