最佳答案
在 /etc/defaults/celeryd
配置文件中,我设置了:
CELERYD_NODES="agent1 agent2 agent3 agent4 agent5 agent6 agent7 agent8"
CELERYD_OPTS="--autoscale=10,3 --concurrency=5"
我知道守护进程产生8个芹菜工人,但我完全不确定 autoscale
和 concurrency
一起做什么。我认为并发是一种指定 worker 可以使用的最大线程数的方法,而自动伸缩是一种工作者在必要时可以向上和向下伸缩子 worker 的方法。
这些任务的有效负载很大(大约20-50kB) ,大约有200-300万个这样的任务,但是每个任务运行不到一秒钟。我看到内存使用激增,因为代理将任务分发给每个工作者,从而多次复制有效负载。
我认为问题在于配置,worker + 并发性 + 自动伸缩的组合是过度的,我想更好地理解这三个选项的作用。