创建 Redis Enterprise 数据库时,Web 控制台报错: "内存限制大于"

上次更新时间 2024年4月18日

问题

如何排查创建 Redis Enterprise 数据库时 Web 控制台返回的错误:“内存限制大于

答案

检查以下输出并参考Redis Enterprise 内存管理

$ rladmin status
CLUSTER NODES:NODE:ID  ROLE   ADDRESS     EXTERNAL_ADDRESS   HOSTNAME      SHARDS CORES        FREE_RAM       PROVISIONAL_RAM   VERSION   STATUS
*node:1                master x.x.x.x                     dd4d656fd6d1  2/100  4            4.69GB/9.73GB  2.02GB/7.98GB     6.2.8-41  OK   

在此示例中,如果尝试创建 4GB 的数据库,我们会收到错误。 此节点上的 Free_RAM 为 4.69GB(总共 9.73GB)。 Redis Enterprise 仅使用大约 70% 的 RAM,以确保节点中有足够的内存,避免内存不足,因此 Provisional_RAM 字段为 7.98GB。 但是,此临时 RAM 中只有 2.02GB 是空闲的。 请记住

  • Free_RAM - 主机上总 RAM 中可供系统使用的 RAM 量。
  • Provisional_RAM - 可用于配置到数据库的 RAM 量,占分配给数据库的总 RAM 的一部分(Free_RAM 的一部分)

您还可以检查可用内存并确保系统未使用交换空间

free -m

因此,在此示例中,我们可以验证一切正常(确认有可用 RAM,没有交换,但即使有 4.7GB 可用,Redis Enterprise 也仅允许使用一部分内存)

free -m              
total        used        free      shared  buff/cache   availableMem:           9964        4607        
1353         341        4002        4720Swap:          2047           0        2047

解决方案

  1. 向节点添加更多内存
  2. 通过停止其他非 Redis 进程来释放现有内存。
  3. 或者,您可以创建一个小于可用临时 RAM 的数据库
  4. 创建一个集群数据库,以便可以将较小的分片放置在不同的节点上