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

2022-06-27 09:43:24 +08:00
 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
1088 次点击
所在节点    Celery
5 条回复
lsdvincent
2022-06-27 09:59:29 +08:00
设置个 --autoscale=4,2 最大最小 试试?
julyclyde
2022-06-27 13:26:22 +08:00
是不是有些任务卡住了没有执行完毕啊?
longmeier90
2022-06-27 16:44:15 +08:00
@lsdvincent worker_max_tasks_per_child = 40 应该是这个配置导致的,我把它去掉就没有问题啦。这个是让它自动销毁,然后启动新的 worker ,没想到没有销毁就启动新的 worker 啦
bbbb
2022-06-28 09:51:01 +08:00
我用 mq+celery 的出现的是,任务过多,扭转不过来,会出现大量重复任务,导致 cpu 干满。查了资料,各种设置都没解决,最终解决办法任务不重要,停机,删除队列中所有任务。不重要的任务就没有花过多时间去纠结。刚好 celery 符合我的任务场景,是又爱又恨。
julyclyde
2022-07-01 10:52:58 +08:00
@longmeier90 那你应该研究一下为什么没有销毁啊

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

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

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

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

© 2021 V2EX