如何管理Celery / RabbitMQ的内存消耗?

时间:2017-01-16 02:10:08

标签: python rabbitmq multiprocessing celery

我使用celery / rabbitmq访问互联网上的页面。由于有些页面很重,我的内存使用量会有所增加,所以一段时间后芹菜和系统的平均负载会增加太多。

top - load average: 74.91, 128.04, 173.44
Tasks: 3449 total,  88 running, 3353 sleeping,   0 stopped,   8 zombie
%Cpu(s):  4.9 us, 94.8 sy,  0.0 ni,  0.1 id,  0.1 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem:   8175376 total,  8071820 used,   103556 free,     2256 buffers
KiB Swap:  8386556 total,  8386556 used,        0 free.    65620 cached Mem

它命中交换,大多数任务都会超时。所以我想减少进程或工作器的数量,以使内存使用率保持在80%以下。我发现可以动态增长和缩小过程的唯一方法是'--autoscale'选项,但它以相反的方式工作,

  

autoscaler在有工作要做时会添加更多池进程,   并在工作负载较低时开始删除进程。

那么我可以使用其他任何解决方案吗?我应该自己监控内存使用情况,然后使用celery.app.control方法,如:

Control.pool_shrink(n=1, destination=None, **kwargs)[source]

缩小尺寸?有没有更简单的解决方案呢?

0 个答案:

没有答案