当 运行 同一台机器上有多个 redis 实例时计算 redis 最大内存

Calculating redis max memory when running multiple redis instance in same machine

我想设置一个 Redis 集群,其中包含 3 台机器的 6 个 Redis 实例(因此一台机器有 2 个 Redis 实例),每个实例具有 32GB 内存,8 个核心 CPU。 我不确定 Redis 最大内存配置需要多少字节。

  1. 考虑到 OS 使用了 4GB 内存,我想还有 28GB 留给用户进程。 由于在多核环境中有 运行 2 个 Redis 实例,我认为我应该为每个 Redis 实例设置 14GB 最大内存配置值,因为两个进程都同时启动并且 运行。但我不确定。对于这种情况,哪个最大内存值是正确的?

  2. 我记得操作系统为每个进程保存pagetables,内核工作在进程上时加载和卸载进程的pagetable到物理内存.那么对于单核CPU环境,32GB内存,是否可以为每个实例设置28GB最大内存,因为只有一个进程运行并发?

一般情况下,不建议一机多Redis实例。因为CPU的三级缓存不能有效工作。如果您希望 Redis 运行 更有效,您可以手动将 Redis 实例绑定到不同的 cpu 核心。

然后,最大内存。

  1. 如果您使用 RDB 进行数据保存。答案是7GB。 BGSAVE 线程将从主线程分叉出来,COW(Copy-on-write) 将在新写入时复制页表,因此它最多会再使用 7GB。两个 Redis 实例将花费 28GB。
  2. 单核CPU环境对Redis不友好。我建议双核。最大内存为 14GB。