python - Celery - 最小化内存消耗

标签 python django profiling memory-management celery

我们有约 300 个 celeryd 进程在 Ubuntu 10.4 64 位下运行,在空闲状态下每个进程占用约 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

最佳答案

读这个:

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

听起来你每个 celeryd 都有一个 worker 。这似乎是错误的。每个 celeryd 应该有几十个 worker 。不断增加工作人员的数量(并减少 celeryd 的数量),直到您的系统非常繁忙且非常缓慢。

关于python - Celery - 最小化内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346318/

相关文章:

python - "KeyError"和 "KeyError as e"之间有什么区别?

android - 性能加起来并不等于 100%

c# - EQATEC 分析器与 DotTrace 相比如何?

python - pyplot 显示不良,图像太暗

python - python 中的复杂生成器

python - QComboBox 和 app.setStyle ("cleanlooks")

Python 方法的参数验证,ArgError

mysql - Django-MySQL 无法识别额外查询集中的 model.column?

django - 在 Django 中间件中访问当前 View 类实例

python - 为什么两种寻找素数的算法在速度上相差如此之大,即使它们看起来迭代次数相同?