这里有点像 Celery 菜鸟,但我认为我有一个配置问题,Celery 在 Redis 中放置了太多东西
我的目标是尽可能减少或优化 Redis 使用的内存量
我有一个相当大的 Django 产品,其中 Celery 作业运行“很多”。在我的 settings.py 中有
BROKER_BACKEND = "redis"
来自 top -p13907
Redis 正在使用大量内存(在盒子上它只被 Celery 使用):
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
我找到了这个 CELERY_TASK_RESULT_EXPIRES设置看起来像是我应该添加到我的设置文件中的东西。
默认情况下,从文档看来它设置为 1 天(86400 秒)
这是我想改变的吗?还是我应该研究更多设置?我不确定的另一件事是,如果我添加它,我应该如何决定将其设置为多少“安全”秒数?
最佳答案
我想也许你的 celery 调用者忘记清理结果,这些结果将存储在消息队列服务器中直到过期。在 celery 中,你必须打电话
r.get()
获取结果并将其清理到消息队列中。如果您只访问结果而不调用此函数:
r.result
结果仍然会被消息队列服务器持有并消耗大量内存!
关于django - 如何调整 celery 设置,使 Redis 不使用太多内存? celery 任务 RESULT_EXPIRES?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12273384/