【问题标题】:Choosing redis maxmemory size and BGSAVE memory usage选择 redis maxmemory 大小和 BGSAVE 内存使用量
【发布时间】:2013-02-19 13:31:35
【问题描述】:

我正在尝试找出在以下情况下“maxmemory”的安全设置是什么:

  • 写繁重的应用程序
  • 8GB 内存
  • 假设其他进程占用大约 1GB
  • 这意味着redis进程的内存使用量永远不会超过7GB
  • 每个 BGSAVE 事件的内存使用量都会翻倍,因为:

在 redis docs 中,关于 BGSAVE 事件的内存使用量增加如下所述:

如果您在写入量很大的应用程序中使用 Redis,则在将 RDB 文件保存在磁盘上或重写 AOF 日志时,Redis 可能会使用通常使用的内存的 2 倍。

  • maxmemory 限制大致与 redis-cli INFO 中的 'used_memory' 进行比较(如 here 所述),并且不考虑 redis 使用的其他内存

我是否正确,这意味着在这种情况下 maxmemory 设置应设置为不高于 (8GB - 1GB) / 2 = 3.5GB?

如果是这样,我将为 redis 文档创建一个拉取请求以更清楚地反映这一点。

【问题讨论】:

    标签: memory redis


    【解决方案1】:

    在这种情况下,我建议限制为 3GB。是的,文档非常正确,运行 bgsave 将在短期内使内存需求翻倍。不过,我更愿意为系统保留 2GB 内存,或者最多为持久主控保留 40% 的最大内存。

    您表示您的应用程序编写量很大。在这种情况下,我强烈建议第二台服务器执行保存操作。我发现在高写入期间,bgsave 对客户端的响应时间可能会变高。它不是 Redis 本身造成的,而是服务器本身的响应。对于虚拟机尤其如此。在此设置下,您将使用第二台服务器从主服务器从属服务器并保存到磁盘,同时第一台服务器保持响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 2012-07-29
      • 2023-04-04
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 2012-08-18
      相关资源
      最近更新 更多