

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 擴展 ElastiCache Serverless 叢集
<a name="Scaling-serverless"></a>

ElastiCache Serverless 會在工作負載流量上升或下降時，自動容納您的工作負載流量。對於每個 ElastiCache Serverless 快取，ElastiCache 會持續追蹤 CPU、記憶體和網路等資源的使用率。當上述任何資源受到限制時，ElastiCache Serverless 會透過新增碎片並將資料重新分配到新碎片的方式進行橫向擴展，您的應用程式不會面臨任何停機時間。您可以在 CloudWatch 中，藉由監控快取資料儲存的 `BytesUsedForCache` 指標以及運算用途的 `ElastiCacheProcessingUnits` (ECPU)，來監控快取所取用的資源。

## 設定擴展限制以管理成本
<a name="Pre-Scaling"></a>

您可以選擇為快取設定快取資料儲存和 ECPU/秒的最大用量，以控制快取成本。這樣做將確保您的快取用量永遠不會超過所設定的上限。

如果您設定擴展上限，則當快取達到上限時，應用程式可能會遇到快取效能降低的情況。當您設定快取資料儲存上限，而您的快取資料儲存達到該上限時，ElastiCache 會使用 LRU 邏輯開始移出快取中已設定存活期 (TTL) 的資料。如果沒有可移出的資料，則請求寫入其他資料時，會收到「記憶體不足 (OOM)」錯誤訊息。當您設定 ECPU/秒上限，且工作負載的運算使用率超過此值時，ElastiCache 會開始調節請求。

如果您在 `BytesUsedForCache` 或 `ElastiCacheProcessingUnits` 設定上限，我們強烈建議您將 CloudWatch 警示設定為低於上限的值，以便在快取運作接近這些限制時收到通知。建議設定的警示值為上限的 75%。請參閱文件，了解如何設定 CloudWatch 警示。

## 使用 ElastiCache Serverless 預先擴展
<a name="Pre-Scaling"></a>

**ElastiCache Serverless 預先擴展**

透過預先擴展，也稱為預熱，您可以為 ElastiCache 快取設定支援的最低限制。您可以為每秒 ElastiCache 處理單元 ECPUs) 或資料儲存設定這些最小值。這在準備預期的擴展事件時非常有用。例如，如果遊戲公司預期在新遊戲啟動的第一分鐘內，登入次數會增加 5 倍，他們可以準備快取，以因應用量大幅增加的情況。

您可以使用 ElastiCache 主控台、CLI 或 API 執行預先擴展。ElastiCache Serverless 會在 60 分鐘內更新快取上可用的 ECPUs/秒，並在完成最低限制更新時傳送事件通知。

**預先擴展的運作方式**

當透過主控台、CLI 或 API 更新 ECPUs秒或資料儲存的最低限制時，該新限制可在 1 小時內使用。ElastiCache Serverless 在空快取上支援 30K ECPUs秒，使用僅供讀取複本功能時最高支援 90K ECPUs/秒。適用於 Valkey 8.0 的 ElastiCache Serverless 每 2-3 分鐘可以將支援的每秒請求 (RPS) 加倍，從 13 分鐘內的零達到每個快取 5M RPS，並具有一致的低於毫秒的 p50 讀取延遲。如果您預期即將發生的擴展事件可能會超過此速率，則建議您將最小 ECPUs/秒設定為您在峰值事件至少 60 分鐘之前預期的峰值 ECPUs/秒。否則，應用程式可能會遇到延遲增加和請求限流。

下限更新完成後，ElastiCache Serverless 會開始測量您每秒新的最低 ECPUs或新的最低儲存。即使您的應用程式未在快取上執行請求，或您的資料儲存用量低於下限，也會發生這種情況。當您從目前的設定降低下限時，更新會立即進行，因此 ElastiCache Serverless 會立即以新的下限開始計量。

**注意**  
當您設定最低用量限制時，即使您的實際用量低於最低用量限制，仍需支付該限制的費用。超過最低用量限制的 ECPU 或資料儲存用量會以一般費率計費。例如，如果您將最低用量限制設定為每秒 100，000 個 ECPUs，則將會向您收取每小時至少 1.224 USD 的費用 （使用 us-east-1 中的 ECPU 價格），即使您的用量低於該最低用量。
ElastiCache Serverless 支援快取上彙總層級的請求最小擴展。ElastiCache Serverless 也支援每個插槽每秒最多 30K ECPUs（使用 READONLY 連線從複本讀取時為每秒 90K 個 ECPUs)。最佳實務是，您的應用程式應確保金鑰分佈在 Valkey 或 Redis OSS 插槽和金鑰之間的流量盡可能一致。

## 使用 主控台和 設定擴展限制 AWS CLI
<a name="Pre-Scaling.console"></a>

*使用 AWS 主控台設定擴展限制*

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 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}'
```