由于回复pidboxes,Redis在用作Celery代理时会占用大量内存

时间:2014-08-19 15:01:32

标签: python redis celery django-celery

我们正在运行芹菜3.1.8,Redis作为经纪人后端。 我们的配置非常简单,我们不关心结果,为此我们设置

CELERY_IGNORE_RESULT = True

然而,我们注意到我们的redis代理实例占用了大量内存(~3GB),而其中的实际队列和消息数在任何给定时刻都非常小。 在检查了RDB文件之后,我们注意到有一些巨大的列表:

database,type,key,size_in_bytes,encoding,num_elements,len_largest_element
0,list,"ed2d26b5-b8fb-3478-ace7-6714e8a7b4ed.reply.celery.pidbox",70733024,linkedlist,4,17696745
0,list,"e3eda502-27eb-348d-a86e-1d78fc31b165.reply.celery.pidbox",35350876,linkedlist,2,17686857
0,list,"6421b8c1-bbc0-3a59-a7ee-f26450552a60.reply.celery.pidbox",35443327,linkedlist,2,17762611
0,list,"8439dcd0-921e-3922-8504-9057b6c9834a.reply.celery.pidbox",106088780,linkedlist,6,17696745
0,list,"85c667c8-63b6-338f-b00a-e1f2cd4da143.reply.celery.pidbox",17762845,linkedlist,1,17762611
0,list,"05d0c0f2-9530-37f3-a9cb-189fc237303c.reply.celery.pidbox",106088769,linkedlist,6,17696743
0,list,"d3f200fd-c81e-3d6d-acf3-d0e9021e7e5c.reply.celery.pidbox",35431615,linkedlist,2,17762611
0,list,"7b4291c7-b916-3806-910b-c250c9a7fece.reply.celery.pidbox",88401866,linkedlist,5,17696745
0,list,"0c8b64c1-7efe-3070-b2e3-980f395b84e8.reply.celery.pidbox",123752294,linkedlist,7,17696743
0,list,"e5cf288b-8ced-3f6c-891e-34e2d302c89c.reply.celery.pidbox",70711492,linkedlist,4,17691717
0,list,"a9cafe29-204d-3d97-9b7b-322a847d0789.reply.celery.pidbox",53121613,linkedlist,3,17762611
0,list,"1c1f90ca-1fe1-35e4-a144-3a97177a674b.reply.celery.pidbox",35431683,linkedlist,2,17762611

这些列表包含一些json项目,每个项目都包含一个巨大的Body。

即使我们将celery设置为忽略结果,也会出现这些回复pidbox出现的原因? 如果我们对任务的结果不感兴趣,它们是否需要芹菜? 我们想摆脱这些,因为他们正在转变一个应该需要大约10mb内存的实例才能占用~3gb的内存。

任何帮助都会很棒,如果您需要有关配置的更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的设置应该摆脱这些pidbox消息CELERY_SEND_EVENTS。对于像celerymon这样的工具,它默认启用。但是,对我来说,设置CELERY_SEND_EVENTS = False并不会改变任何内容。你可能会试一试,也许它适合你。

http://docs.celeryproject.org/en/3.1/configuration.html#celery-send-events

  

CELERY_SEND_EVENTS

     

发送事件,以便可以通过celerymon等工具监控工作人员。

答案 1 :(得分:0)

要完全禁用工作器上的pidbox使用逻辑,可以取消设置CELERY_ENABLE_REMOTE_CONTROL

https://celery.readthedocs.io/en/latest/userguide/configuration.html#worker-enable-remote-control

请注意,这意味着您将失去某些运行时更改功能。您将无法询问工作人员从哪个队列消耗资源,正在执行的任务,添加队列等。

然后,花朵的特征集中的这一部分也会受到限制。

在其他情况下,该库的早期版本可能会在pidbox上发送这些统计信息/信息。