3

有点像 Celery 菜鸟,但我想我有一个配置问题,Celery 在 Redis 中放了太多东西

如果可以的话,我的目标是尝试减少或优化 Redis 使用的内存量

我有一个相当大的 Django 生产设备,其中 Celery 作业运行“很多”。在我的 settings.py 我有

BROKER_BACKEND = "redis"

top -p13907Redis 使用大量内存(在仅由 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 秒)

这是我想要改变的吗?还是我应该研究更多设置?我不确定的另一件事是如果我添加它,我应该如何决定将它设置为的“安全”秒数是多少?

4

1 回答 1

0

我想也许你的 celery 调用者忘记清理结果,这些结果将存储在消息队列服务器中直到过期。在芹菜中,你必须打电话

r.get()

获取结果并将其清理到消息队列中。如果您只访问结果而不调用此函数:

r.result

结果仍将由消息队列服务器持有并大量消耗您的内存!

于 2014-03-10T02:09:19.117 回答