数据库内存限制
在设置数据库的内存限制时,您可以定义数据库可以达到的最大大小。
Redis 企业软件 | Redis 云 |
---|
在设置数据库的内存限制时,您可以定义 数据库可以跨所有数据库副本和 分片,包括主分片和副本分片。
如果集群中数据库的总大小达到内存 limit,则数据驱逐策略为 应用的。
选型因素
调整数据库大小时要考虑的因素:
- 数据集大小:您希望限制高于数据集大小,以便为开销留出空间。
- 数据库吞吐量:高吞吐量需要更多的分片,从而导致更高的内存限制。
- modules:将 modules 与数据库一起使用会消耗更多内存。
- Database clustering:使您能够将数据分散到跨多个节点的分片中。
- 数据库复制:启用复制会使内存消耗翻倍。
主动-主动数据库的其他因素:
-
主动-主动复制:启用主动-主动复制所需的内存是常规复制的两倍,最高可达每个实例原始数据大小的两倍 (2x)。
-
用于分片之间同步的数据库复制积压。默认情况下,此字段设置为数据库大小的 1%。
-
用于集群之间同步的主动-主动复制积压。默认情况下,此字段设置为数据库大小的 1%。
此外,了解主动-主动数据库激活驱逐策略的阈值较低也很重要,因为它需要传播到所有参与的集群。当其中一个 Active-Active 实例达到其内存限制的 80% 时,驱逐策略开始驱逐密钥。
启用了 Auto Tiering 的数据库的其他因素:
-
可用闪存空间必须大于或等于总数据库大小 (RAM+Flash)。额外的空间考虑了写入缓冲区和写入放大。
-
数据库持久性:Auto Tiering 使用双数据库持久性,其中主分片和副本分片都保存到磁盘。这可能会增加一些处理器和网络开销,尤其是在具有网络连接存储的云配置中。
当 Redis Enterprise Software 的 RAM 不足时会发生什么情况?
Redis Enterprise Software 管理节点内存,以便数据完全位于 RAM 中(除非使用 Auto Tiering)。如果没有足够的 RAM 可用,Redis Enterprise 会阻止向数据库中添加更多数据。
Redis Enterprise Software 可保护现有数据,并防止数据库能够将数据存储到分片中。
您可以将集群配置为将数据移动到另一个节点,甚至可以根据管理员在每个数据库上设置的驱逐策略将其丢弃。
Auto Tiering 管理内存,因此您也可以使用闪存 (SSD) 来存储数据。
RAM 不足的事件顺序
- 如果有其他节点可用,您的分片将迁移到其他节点。
- 如果驱逐策略允许驱逐,则分片开始释放内存, 这可能会导致数据丢失。
- 如果驱逐策略不允许驱逐,您将收到 内存不足 (OOM) 消息。
- 如果分片无法释放内存,Redis Enterprise 将依赖 OS 进程来停止副本, 但会尝试避免停止主分片。
我们建议您有一个监控平台,以便在系统 RAM 不足之前提醒您。 您必须保持足够的可用内存,以确保您拥有健康的 Redis Enterprise 安装。
内存指标
Cluster Manager UI 提供了可帮助您评估内存使用情况的指标。
- 可用 RAM
- RAM 碎片
- 已用内存
- 内存使用情况
- 内存限制
有关更多详细信息,请参阅控制台指标。