芹菜 – 减less记忆消耗

我们在Ubuntu 10.4 64位下运行了约300个celeryd进程,每个进程的空闲时间为〜19mb RES,〜174mb VIRT,因此 – 所有进程在空闲时都有大约6GB的RAM。 处于活动状态 – 进程需要100MB的RES和〜300MB的VIRT

每个进程使用minidom(xml文件<500kb,结构简单)和urllib。

问题是 – 我们如何减less内存消耗 – 至less对于空闲的工作人员来说,可能是一些芹菜或python选项可能有帮助? 如何确定哪个部分占用大部分内存?

看看AutoScaler类的子类,并在__init__设置min_concurrencyvariables。 默认的min_concurrency为0会阻止默认的AutoScaler缩小。

我没有testing过这个类(我的Celerytesting节点被closures),但类似下面的东西应该工作:

 from celery.worker.autoscale import Autoscaler class MinIdleAutoscaler(Autoscaler): def __init__(self,pool, max_concurrency, min_concurrency=10, keepalive=30, logger=None): Autoscaler.__init__(self,pool,max_concurrency,min_concurrency,keepalive,logger) 

然后,您可以通过在Celeryconfiguration中设置CELERYD_AUTOSCALER来告诉Celery使用这个类。