在创建 Redis Enterprise 数据库时,从网页控制台获取的错误信息:"内存限制大于"

最后更新 2024 年 4 月 18 日

问题

如何排除在创建 Redis Enterprise 数据库时从网页控制台返回的错误:"内存限制大于 "

答案

检查以下输出,并参考 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 的数据库,我们会收到错误信息。此节点的可用 RAM 为 9.73GB 中的 4.69GB。Redis Enterprise 仅使用大约 70% 的 RAM,以确保节点中有足够的内存来避免内存不足,因此 Provisional_RAM 字段为 7.98GB。但是,只有 2.02GB 的预留 RAM 是空闲的。请记住,

  • Free_RAM - 主机上总 RAM 中可用于系统使用的 RAM 量。
  • Provisional_RAM - 为数据库分配的总 RAM(Free_RAM 的一部分)中可用于为数据库分配的 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. 向节点/s 添加更多内存。
  2. 通过停止其他非 Redis 进程来释放现有内存。
  3. 或者,您可以创建大小小于可用预留 RAM 的数据库。
  4. 创建集群数据库,以便将较小的分片放置在不同的节点上。