我开始为 Python/Django Web 项目中的任务运行 celery,该项目托管在具有 8 个内核或 CPU 的单个 VM 上。我现在需要改进配置——我犯了菜鸟错误。
我supervisor
用来处理芹菜工人和殴打。在/etc/supervisor/conf.d/
中,我有两个与工人相关的 conf 文件 -celery1.conf
和celery1.conf
. 我是不是该...
1)删除其中之一?两者都产生不同的工人。即以前的 conf 文件有command=python manage.py celery worker -l info -n celeryworker1
. 后者有command=python manage.py celery worker -l info -n celeryworker2
。这里权威地规定每台机器运行 1 个工人。
2)在conf中修补?numprocs
目前celery1.conf
,我已经定义了numprocs=2
. 在celery2.conf
中,我定义了numprocs=3
* (见后面的页脚)。同时,在 中/etc/default/celeryd
,我有CELERYD_OPTS="--time-limit=300 --concurrency=8"
。发生什么了?主管numprocs
优先concurrency
于 celeryd,还是什么?我应该设置numprocs=0
吗?
*两个文件的总 numprocs = 2+3 = 5。这检查出来了。sudo supervisorctl
显示 5 个 celery 工作进程。但是在 newrelic 中,我看到celeryd运行了 45 个进程。有没有搞错?!即使主管创建的每个 proc 实际上都产生了 8 个 proc(通过 celeryd),total numprocs x concurrency = 5 x 8 = 40
. 这比 newrelic 显示的 45 少 5。需要指导来纠正这些错误。
对比截图:
对比