我用 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