芹菜 - 减少内存消耗

And*_*rew 9 python django profiling memory-management celery

我们有大约300个芹菜进程在Ubuntu 10.4 64位下运行,在空闲时每个进程需要~19mb RES,~174mbV VIRT,因此 - 对于所有进程来说,空闲时大约有6GB RAM.在活动状态 - 过程需要高达100mb的RES和~300mbV的VIRT

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

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

UPD:那是航班搜索代理商,一个代理商/日期的一名工人.我们有10个代理商,一个用户搜索== 9个日期,因此我们每个用户搜索有10*9个代理商.

是否有可能按需启动celeryd进程以避免闲置工作者(类似于apache上的MaxSpareServers)?

UPD2:代理生命周期是 - 发送HTTP请求,等待响应~10-20秒,解析xml(少于0.02秒),将结果保存到MySQL

S.L*_*ott 5

读这个:

http://docs.celeryproject.org/en/latest/userguide/workers.html#concurrency

听起来你每个芹菜有一个工人.这似乎是错的.每个芹菜应该有几十个工人.继续增加工人的数量(并减少芹菜的数量),直到你的系统非常繁忙和非常慢.

  • 每个工人都会产生一个新的celeryd实例. (2认同)