- 我们在一个盒子上安装了大量单独的django安装。其中每一个都有自己的代码库& linux用户。
- 我们使用芹菜进行一些异步任务。
- 每个安装都有自己的芹菜设置,即自己的芹菜&工人。
- 每次安装的异步任务数量是有限的,而不是时间关键的。
- 当一名员工启动时,需要大约30mb的内存。当它运行一段时间后,这个数量可能会增长(可能是由于碎片)。
通过设置在最后一次bulletpoint已是(有点)解决--maxtasksperchild为较小的数字(如10)。这确保了10个任务后的重启,之后内存至少回到30MB。芹菜:限制内存使用量(大量的Django安装)
然而,每个celeryd仍然占用了大量的内存,因为工人的最低金额似乎是1,而不是0。我也想像运行python manage.py celery worker
不会导致最小的可能占有面积。celeryd,因为即使唯一发生的事情是检查任务,整个堆栈也会被加载。
在一个理想的设置中,我想看到以下内容:具有非常小的内存占用(100k左右)的进程正在查看队列中的新任务。当这样的任务出现时,它会在一个单独的进程中旋转(重)完整的django堆栈。当工人完成时,沉重的过程就被放慢了。
这样的设置可以使用(有点)标准的芹菜配置吗?如果不是,那么有什么扩展点?
我们(目前)使用芹菜3.0.17和相关的django芹菜。
Ca.每箱50个安装。 Django芹菜的各种安装对应于各种Django安装。 我的场景与“共享主机”并无太大差别(尽管我与自己分享)。即各种Django项目对应于不同的站点(应用程序)。 –
然后我想你需要重新构建,以便芹菜工作与django安装分离 - 也许有一个管理芹菜工作的单个“admin”django项目,这样你只需要几个工作人员同时工作。 –