Django 如何调整芹菜设置,以便Redis不使用同样多的内存?芹菜任务结果过期?
这里有点像芹菜,但我想我有一个配置问题,芹菜在Redis中放了太多东西 我的目标是尽量减少或优化Redis正在使用的内存量 我有一个相当大的Django生产项目,芹菜工作“很多”。在my settings.py中,我有Django 如何调整芹菜设置,以便Redis不使用同样多的内存?芹菜任务结果过期?,django,redis,celery,Django,Redis,Celery,这里有点像芹菜,但我想我有一个配置问题,芹菜在Redis中放了太多东西 我的目标是尽量减少或优化Redis正在使用的内存量 我有一个相当大的Django生产项目,芹菜工作“很多”。在my settings.py中,我有 BROKER_BACKEND = "redis" 从顶部-p13907Redis正在使用大量内存(盒子上只有芹菜使用): 我找到了这个设置,看起来应该添加到我的设置文件中 默认情况下,从文档中看,它似乎设置为1天(86400秒) 这就是我想要改变的吗?还是有更多的设置需要我查看
BROKER_BACKEND = "redis"
从顶部-p13907
Redis正在使用大量内存(盒子上只有芹菜使用):
我找到了这个设置,看起来应该添加到我的设置文件中
默认情况下,从文档中看,它似乎设置为1天(86400秒)
这就是我想要改变的吗?还是有更多的设置需要我查看?另一件我不确定的事情是,如果我添加了它,我应该如何决定将其设置为“安全”秒数?我猜可能是芹菜调用者忘记了清理结果,这些结果将存储在消息队列服务器中,直到过期。在芹菜里,你必须打电话
r.get()
获取结果并在消息队列中清除它。如果只访问结果而不调用此函数:
r.result
结果仍然会被消息队列服务器保留,并消耗大量内存 我猜您的芹菜调用者可能忘了清理结果,这些结果将存储在消息队列服务器中,直到过期。在芹菜里,你必须打电话
r.get()
获取结果并在消息队列中清除它。如果只访问结果而不调用此函数:
r.result
结果仍然会被消息队列服务器保留,并消耗大量内存 这是什么芹菜?配置结果过期确实是明智的,但可能不是(唯一)原因。当我在shell的2.2.6版本中使用celeryd--version时,3.0之前的版本中出现了影响Redis的内存泄漏。每次启动监视器(celeryev、celerymon、celerycam)时,它都会在数据库中创建一个新密钥,事件的复制次数与启动监视器的次数相同。在芹菜3.0中,它使用PUB/SUB而不是持久列表,这除了解决了内存泄漏之外,还提供了更好的性能。oooo很酷,谢谢!也许这就是我受到的影响…似乎我得到了这个uber大“ae.undeliver”redis密钥,这是Kombu Cellery thing使用的东西(这反过来也是celeryev、celerymon、celerycam使用的东西)发现了它,我想-->是的,当我在该报告中运行示例redis cli命令时,我有同样大的记忆号码这是什么芹菜版本?配置结果过期确实是明智的,但可能不是(唯一)原因。当我在shell的2.2.6版本中使用celeryd--version时,3.0之前的版本中出现了影响Redis的内存泄漏。每次启动监视器(celeryev、celerymon、celerycam)时,它都会在数据库中创建一个新密钥,事件的复制次数与启动监视器的次数相同。在芹菜3.0中,它使用PUB/SUB而不是持久列表,这除了解决了内存泄漏之外,还提供了更好的性能。oooo很酷,谢谢!也许这就是我受到的影响…似乎我得到了这个uber大“ae.undeliver”redis密钥,这是Kombu Cellery thing使用的东西(这反过来也是celeryev、celerymon、celerycam使用的东西)发现了它,我想-->是的,当我在该报告中运行示例redis cli命令时,我也有同样大的记忆数字
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13907 redis 20 0 10.5g 3.3g 532 S 0 42.8 109:38.94 redis-server