View a markdown version of this page

管理 Valkey 和 Redis OSS 的预留内存 - 亚马逊 ElastiCache

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理 Valkey 和 Redis OSS 的预留内存

每种主机类型都有专用于Valkey和的内存量Redis OSS。这是宣传的内存。该reserved-memory-percent参数将部分内存留出来用于非数据用途:

  • 副本上的客户端输出缓冲区

  • 内存因碎片而丢失

  • Copy-on-write 分叉的 bgsave 使用的内存

maxmemory值等于通告的内存减去预留的内存。例如,如果广告的内存为 13.5 GB,预留的内存为 25%,maxmemory则约为 10.1 GB。

重要

reserved-memory-percent默认为 25%。不要降低此值。较低的预留空间可能会导致数据丢失,尤其是在升级或对集群进行其他更改期间。

要预留多少内存

reserved-memory-percent参数默认为 25%。不要降低此值。但是,在某些情况下,增加内存储备可以使您受益。

微型和小型实例

微型和小型实例的大小均适用于轻度活动,没有复制负担。为了提高这些实例在生产工作负载中的运行可靠性,将小型实例的内存预留增加到 30%,将微型实例的内存预留增加到 50%。

强制分叉的 bgsave 或完全同步

在传统的分叉bgsave或完全同步期间,Redis OSS内存使用量可能会增加一倍(或更多),具体取决于流量负载Valkey和模式。FreeableMemory如果不足以运行传统的分叉操作,亚马逊 ElastiCache 会自动切换到无分叉保存机制。这种无分叉机制使用的内存要少得多,但会增加客户端延迟——尤其是对于非常大的 key/value 项目。如果这些延迟对您的用例有影响,请增加内存储备,以确保有足够的内存用于传统的分叉存储。

如果得到 AWS 支持人员的指示

不寻常的流量模式或要求可能会导致独特的内存需求。reserved-memory-percent如果由 AWS 支援指导,则增加。

配置预留内存

reserved-memory-percent参数特定于 ElastiCache。它不是 Valkey 或 Redis OSS 开源代码的一部分。要更改此值,请使用自定义参数组。您无法修改默认参数组。

如果 25% 对你有效,则无需进行任何更改。要使用其他值,请按照以下步骤操作。

更改预留内存百分比值
  1. 运行以下 AWS CLI 命令创建自定义参数组。将系列设置为与您的引擎版本相匹配。有关创建参数组的更多信息,请参阅创建 ElastiCache 参数组

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name my-parameter-group \ --description "Custom reserved memory settings" \ --cache-parameter-group-family redis7

    每个引擎系列只需要一个自定义参数组。百分比值适用于所有节点类型。

  2. 设置reserved-memory-percent为你想要的值。有关修改参数组的更多信息,请参阅 修改 ElastiCache 参数组

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name my-parameter-group \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=30"
  3. 将自定义参数组应用到您的集群或复制组。

    要修改集群,请运行以下 AWS CLI 命令。有关修改集群的更多信息,请参阅修改集 ElastiCache 群

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-cluster \ --cache-parameter-group-name my-parameter-group \ --apply-immediately

    要修改复制组,请运行以下 AWS CLI 命令。有关修改复制组的更多信息,请参阅修改复制组

    aws elasticache modify-replication-group \ --replication-group-id my-replication-group \ --cache-parameter-group-name my-parameter-group \ --apply-immediately