我们有大约 300 个 celeryd 进程在 Ubuntu 10.4 64-bit 下运行,每个进程在空闲时占用大约 19mb RES,大约 174mb VIRT,因此 - 对于所有进程来说,大约有 6GB 的 RAM 处于空闲状态。处于活动状态 - 进程占用高达 100mb 的 RES 和 ~300mb VIRT
每个进程都使用 minidom(xml 文件小于 500kb,结构简单)和 urllib。
问题是 - 我们如何减少 RAM 消耗 - 至少对于空闲的工人来说,可能一些 celery 或 python 选项可能会有所帮助?如何确定哪个部分占用内存最多?
UPD:那是航班搜索代理,一个机构/日期的一名工人。我们有 10 个代理,一个用户搜索 == 9 个日期,因此每个用户搜索我们有 10*9 个代理。
是否可以按需启动 celeryd 进程以避免空闲的工作人员(类似于 apache 上的 MaxSpareServers)?
UPD2:代理生命周期是 - 发送 HTTP 请求,等待响应 ~10-20 秒,解析 xml(花费少于 0.02 秒),将结果保存到 MySQL