这个问题导致大量的内存分配,并且正在杀死机器。
我正在运行一个芹菜机器,使用redis作为代理,配置如下:
celery -A project.tasks:app worker -l info --concurrency=8
当检查芹菜运行进程的数量时,我看到超过8个。
我是不是漏掉了什么?最大并发数有限制吗?
在默认设置下,芹菜总是会比你要求的多启动一个进程。这个附加的流程是一种记账流程,用于协调作为worker一部分的其他流程。它与芹菜的其余部分通信,并将任务分派给实际运行任务的进程。
切换到不同的池实现而不是默认的"prefork"可能会减少创建的进程数量,但这会打开新的蠕虫罐头。
对于并发性问题,我没有建议。
对于内存问题,您可以查看~/.redis/redis.conf
中的redis配置。您有一个maxmemory
属性,它对任务进行限制…
查看Redis配置