创建 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
解决方案
- 向节点添加更多内存
- 通过停止其他非 Redis 进程来释放现有内存。
- 或者,您可以创建一个小于可用临时 RAM 的数据库
- 创建一个集群数据库,以便可以将较小的分片放置在不同的节点上