

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

# 扩展 ElastiCache 无服务器集群
<a name="Scaling-serverless"></a>

ElastiCache 当您的工作负载流量上升或下降时，Serverless 会自动适应您的工作负载流量。对于每个 ElastiCache 无服务器缓存， ElastiCache 持续跟踪 CPU、内存和网络等资源的利用率。当这些资源中的任何一个受到限制时， ElastiCache Serverless 会通过添加新分片并将数据重新分配到新分片来进行扩展，而不会使您的应用程序停机。您可以通过监控缓存数据存储和计算使用率 `ElastiCacheProcessingUnits` (ECPU) `BytesUsedForCache` 指标 CloudWatch 来监控缓存消耗的资源。

## 设置扩展限制以管理成本
<a name="Pre-Scaling"></a>

您可以选择配置缓存数据存储和 ECPU/second 缓存的最大使用量，以控制缓存成本。这样做可以确保缓存使用量永远不会超过配置的最大值。

如果您设置了扩展最大值，则当缓存达到最大值时，应用程序的缓存性能可能会降低。当您设置了最大缓存数据存储空间且缓存数据存储空间达到最大值时， ElastiCache 将开始使用 LRU 逻辑逐出缓存中设置了 Time-To-Live (TTL) 的数据。如果没有可以驱逐的数据，则写入更多数据的请求将收到内存不足（OOM）错误消息。当您设置 ECPU/second 最大值并且工作负载的计算利用率超过该值时， ElastiCache 将开始限制请求。

如果您将最大限制设置为`BytesUsedForCache`或`ElastiCacheProcessingUnits`，我们强烈建议将 CloudWatch 警报设置为低于最大限制的值，以便在缓存接近这些限制时收到通知。我们建议将警报设置为所设最大值限制的 75%。请参阅有关如何设置 CloudWatch 闹钟的文档。

## Pre-scaling 使用 ElastiCache 无服务器
<a name="Pre-Scaling"></a>

**ElastiCache 无服务器预扩展**

使用预缩放（也称为预热），您可以为缓存设置支持的最低限制。 ElastiCache 您可以为每秒 ElastiCache 处理单元 (ECPU) 或数据存储设置这些最小值。这在为预期的扩展事件做准备时非常有用。例如，如果一家游戏公司预计在其新游戏发布的第一分钟内登录人数将增加 5 倍，那么他们就可以让缓存为这一使用量的大幅激增做好准备。

您可以使用 ElastiCache 控制台、CLI 或 API 进行预扩展。 ElastiCache Serverless 会在 60 分钟内更新缓存中的可用 ECPUs/second 内容，并在最低限制更新完成后发送事件通知。

**预扩展的工作原理**

通过控制台、CLI ECPUs/second 或 API 更新数据存储的最低限制后，新的限制将在 1 小时内生效。 ElastiCache Serverless ECPUs/second 在空缓存上支持 30K，使用从副本读取 ECPUs/sec 功能时最多支持 90K。 ElastiCache 适用于 Valkey 8.0 的无服务器可以每 2-3 分钟将支持的每秒请求数 (RPS) 翻一番，在不到 13 分钟的时间内从零达到每个缓存 500 万 RPS，读取延迟始终保持亚毫秒 p50。如果您预计即将到来的扩展事件可能会超过此速率，那么我们建议 ECPUs/second 将最小值设置为在峰值事件发生前至少 60 分钟 ECPUs/sec 您预计的峰值。否则，应用程序可能会遇到延迟增加和请求被节流的情况。

最低限制更新完成后， ElastiCache Serverless 将开始计量新的每秒 ECPU 最小值或新的最低存储空间。即使您的应用程序没有在缓存上执行请求，或者您的数据存储使用量低于最低限度，也会发生这种情况。当您从当前设置中降低最低限制时，更新会立即生效，因此 ElastiCache Serverless 将立即以新的最低限制开始计量。

**注意**  
当您设置最低使用限制时，即使您的实际使用量低于最低使用限制，也会按该限制计费。超出最低使用限制的 ECPU 或数据存储使用量按常规费率计费。例如，如果您将最低使用限制设置为 100,000， ECPUs/second 则即使您的使用量低于设定的最低使用量，也将按每小时至少 1.224 美元的费用（使用 us-east-1 中的 ECPU 价格）。
ElastiCache Serverless 在缓存的聚合级别上支持请求的最小缩放比例。 ElastiCache Serverless 还支持 ECPUs/second 每个插槽最多 30K（使用 READONLY 连接使用从副本读取 ECPUs/second 时为 90K）。作为最佳实践，您的应用程序应确保在 Valkey 或 Redis OSS 槽间的密钥分配以及密钥之间的流量尽可能均匀。

## 使用控制台设置缩放限制 AWS CLI
<a name="Pre-Scaling.console"></a>

*使用 AWS 控制台设置缩放限制*

1. 登录 AWS 管理控制台 并打开 ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 在导航窗格中，选择在要修改的缓存上运行的引擎。

1. 此时会显示运行所选引擎的缓存的列表。

1. 选择缓存名称左侧的单选按钮来选择要修改的缓存。

1. 选择 **Actions**（操作），然后选择 **Modify**（修改）。

1. 在**使用限制**下，设置相应的**内存**或**计算**限制。

1. 单击**预览更改**，然后**保存**更改。

**使用设置缩放限制 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}'
```