Redis-server在启动时使用所有RAM

时间:2018-01-12 13:32:26

标签: redis redis-server

我正在使用redis并注意到它因以下错误而崩溃:

MISCONF Redis is configured to save RDB snapshots

我尝试了此post

中建议的解决方案

但是在权限和空间方面似乎一切都很好。

htop命令告诉我redis占用了70%的RAM。我试图停止/重新启动redis以便刷新,但在启动时,redis使用的RAM量大幅增长并停止在66%左右。我很确定目前还没有进程使用任何redis实例!

那里发生了什么?

1 个答案:

答案 0 :(得分:0)

不断增长的ram问题是Redis在首次数据加载时的预期行为,重新启动后,将数据写入磁盘(快照过程)。 Redis倾向于尽可能多地分配内存,除非你不在conf文件中使用“maxmemory”选项。

它分配内存但不立即释放。有时需要几个小时,我看到了这样的情况。

关于Redis的众所周知的事实是,它可以分配最多两倍大小的数据集。

我建议你等几个小时不重启(Redis可以在这个时间工作,获取/设置操作等)并继续观察内存。

请检查that

  

当按键时,Redis不会总是释放(返回)内存到操作系统   除去。这对Redis来说并不是特别之处,但它是最重要的   malloc()实现工作。例如,如果您填写实例   用5GB的数据,然后删除相当于2GB的数据,   驻留集大小(也称为RSS,即数量)   该进程消耗的内存页面可能仍然存在   5GB,即使Redis声称用户内存大约为3GB。这个   之所以发生,是因为底层分配器无法轻松释放   记忆。例如,通常会分配大多数已删除的密钥   与仍然存在的其他键相同的页面。