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