本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以根据需要扩展 ElastiCache 缓存。无服务器缓存和自行设计的集群可提供多种不同的扩缩选项。
扩展 ElastiCache 无服务器
ElastiCache 当您的工作负载流量上升或下降时,Serverless 会自动适应您的工作负载流量。对于每个 ElastiCache 无服务器缓存, ElastiCache 持续跟踪 CPU、内存和网络等资源的利用率。当这些资源中的任何一个受到限制时, ElastiCache Serverless 会通过添加新分片并将数据重新分配到新分片来进行扩展,而不会使您的应用程序停机。您可以通过监控缓存数据存储和计算使用率 ElastiCacheProcessingUnits
(ECPU) BytesUsedForCache
指标 CloudWatch 来监控缓存消耗的资源。
设置扩展限制以管理成本
您可以选择为缓存数据存储和缓存的每秒 ECPU 数配置最大使用量,以控制缓存成本。这样做可以确保缓存使用量永远不会超过配置的最大值。
如果您设置了扩展最大值,则当缓存达到最大值时,应用程序的缓存性能可能会降低。当您设置了最大缓存数据存储空间且缓存数据存储空间达到最大值时, ElastiCache 将开始使用 LRU 逻辑逐出缓存中设置了 Time-To-Live (TTL) 的数据。如果没有可以驱逐的数据,则写入更多数据的请求将收到内存不足(OOM)错误消息。当您设置了 ecpu/秒的最大值,并且工作负载的计算利用率超过此值时, ElastiCache 将开始限制请求。
如果您将最大限制设置为BytesUsedForCache
或ElastiCacheProcessingUnits
,我们强烈建议将CloudWatch 警报设置为低于最大限制的值,以便在缓存接近这些限制时收到通知。我们建议将警报设置为所设最大值限制的 75%。请参阅有关如何设置 CloudWatch 闹钟的文档。
使用 ElastiCache 无服务器进行预扩展
ElastiCache 无服务器预扩展
使用预缩放(也称为预热),您可以为缓存设置支持的最低限制。 ElastiCache 您可以为每秒 ElastiCache 处理单位 (ECPUs) 或数据存储设置这些最小值。这在为预期的扩展事件做准备时非常有用。例如,如果一家游戏公司预计在其新游戏发布的第一分钟内登录人数将增加 5 倍,那么他们就可以让缓存为这一使用量的大幅激增做好准备。
您可以使用 ElastiCache 控制台、CLI 或 API 进行预扩展。 ElastiCache Serverless 会在 60 分钟内更新缓存中可用的 ECPUs /second,并在最低限制更新完成后发送事件通知。
预扩展的工作原理
通过控制台、CLI 或 API 更新 ECPUs /second 或数据存储的最低限制后,新的限制将在 1 小时内生效。 ElastiCache Serverless 在空缓存上支持 30K ECPUs /秒,使用从副本读取功能时支持高达 90K ECPUs /秒。 ElastiCache 适用于 Valkey 8.0 的无服务器可以每 2-3 分钟将支持的每秒请求数 (RPS) 翻一番,在不到 13 分钟的时间内从零达到每个缓存 500 万 RPS,读取延迟始终保持亚毫秒 p50。如果您预计即将到来的扩展事件可能会超过此速率,那么我们建议将最小 ECPUs /second 设置为峰值事件发生前至少 60 分钟预期的峰值 ECPUs /秒。否则,应用程序可能会遇到延迟增加和请求被节流的情况。
最低限制更新完成后, ElastiCache Serverless 将开始为您计量新的最低 ECPUs 每秒或新的最低存储空间。即使您的应用程序没有在缓存上执行请求,或者您的数据存储使用量低于最低限度,也会发生这种情况。当您从当前设置中降低最低限制时,更新会立即生效,因此 ElastiCache Serverless 将立即以新的最低限制开始计量。
注意
当您设置最低使用限制时,即使您的实际使用量低于最低使用限制,也会按该限制计费。超出最低使用限制的 ECPU 或数据存储使用量按常规费率计费。例如,如果您将最低使用限制设置为 100,000 ECPUs /秒,则即使您的使用量低于设定的最低使用量,也将按每小时 1.224 美元收费(使用 us-east-1 中的 ECPU 价格)。
ElastiCache Serverless 在缓存的聚合级别上支持请求的最小缩放比例。 ElastiCache Serverless 还支持每个插槽最大 30K ECPUs /秒(使用只读连接使用从副本读取时为 90K ECPUs /秒)。作为最佳实践,您的应用程序应确保在 Valkey 或 Redis OSS 槽间的密钥分配以及密钥之间的流量尽可能均匀。
使用控制台设置缩放限制 AWS CLI
使用 AWS 控制台设置缩放限制
登录 AWS Management Console 并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/
。 在导航窗格中,选择要修改的在缓存上运行的引擎。
此时会显示运行所选引擎的缓存的列表。
选择缓存名称左侧的单选按钮来选择要修改的缓存。
选择 Actions(操作),然后选择 Modify(修改)。
在使用限制下,设置相应的内存或计算限制。
单击预览更改,然后保存更改。
使用设置缩放限制 AWS CLI
要使用 CLI 更改扩展限制,请使用 modify-serverless-cache API。
Linux:
aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \
--cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'
Windows:
aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^
--cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'
使用 CLI 取消扩展限制
要使用 CLI 取消扩展限制,请将最小和最大限制参数设置为 0。
Linux:
aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \
--cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'
Windows:
aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^
--cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'