【问题标题】:Redis-server using all RAM at startupRedis 服务器在启动时使用所有 RAM
【发布时间】:2018-01-12 13:32:26
【问题描述】:

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

MISCONF Redis is configured to save RDB snapshots

我尝试了post中建议的解决方案

但就权限和空间而言,一切似乎都还可以。

htop 命令告诉我 redis 正在消耗 70% 的 RAM。我试图停止/重新启动 redis 以刷新,但在启动时,redis 使用的 RAM 量急剧增长并停止在 66% 左右。我很确定此时没有进程在使用任何 redis 实例!

那里发生了什么?

【问题讨论】:

  • 您在启动 Redis 服务器时等待了多少时间?比如,5小时后还是和你说的不释放内存一样吗?
  • 重启后立即

标签: redis redis-server


【解决方案1】:

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

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

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

我建议你等待几个小时而不重新启动(Redis 可以在这段时间内工作,get/set 操作等)并继续观察内存。

也请查看that

Redis 不会总是释放(归还)内存给操作系统。 删除。这对 Redis 来说并没有什么特别之处,但它是最 malloc() 实现工作。例如,如果您填充一个实例 使用 5GB 的数据,然后删除相当于 2GB 的数据, 驻留集大小(也称为 RSS,即 进程消耗的内存页面)可能仍然存在 5GB,即使 Redis 会声称用户内存在 3GB 左右。这 发生是因为底层分配器不能轻易释放 记忆。例如,大多数删除的键通常分配在 与仍然存在的其他键相同的页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2012-08-07
    • 2012-11-04
    • 1970-01-01
    • 2019-02-08
    • 2019-02-12
    • 2021-06-21
    相关资源
    最近更新 更多