我们在Ubuntu 10.4 64位系统上运行了大约300个celeryd进程。 在空闲状态下,每个进程占用约19MB的RES和~174MB的VIRT,因此所有进程在空闲时占用了约6GB的RAM。 在活动状态下,进程会占用多达100MB的RES和~300MB的VIRT。
每个进程都使用minidom(xml文件大小小于500KB,结构简单)和urllib。
问题是如何减少RAM消耗-至少对于空闲的工作者来说,可能一些celery或python选项可以帮助? 如何确定哪部分占用了大部分内存?
更新:这是航班搜索代理,每个机构/日期一个工作程序。 我们有10个机构,一个用户搜索== 9个日期,因此我们有10 * 9个代理程序与一个用户搜索相关联。
是否可以按需启动celeryd进程以避免空闲的工作程序(类似于apache的MaxSpareServers)?
更新2:代理生命周期是-发送HTTP请求,等待响应约10-20秒,解析xml(耗时不到0.02秒),将结果保存到MySQL。
每个进程都使用minidom(xml文件大小小于500KB,结构简单)和urllib。
问题是如何减少RAM消耗-至少对于空闲的工作者来说,可能一些celery或python选项可以帮助? 如何确定哪部分占用了大部分内存?
更新:这是航班搜索代理,每个机构/日期一个工作程序。 我们有10个机构,一个用户搜索== 9个日期,因此我们有10 * 9个代理程序与一个用户搜索相关联。
是否可以按需启动celeryd进程以避免空闲的工作程序(类似于apache的MaxSpareServers)?
更新2:代理生命周期是-发送HTTP请求,等待响应约10-20秒,解析xml(耗时不到0.02秒),将结果保存到MySQL。
celeryd
服务器? - S.Lott