如何為我的 Redis 叢集選擇正確的執行個體類型和大小?

上次更新日期:2022 年 6 月 27 日

如何為我的工作負載選取 Amazon ElastiCache for Redis 節點大小和叢集組態以取得最佳效能?

簡短描述

為 ElastiCache 叢集選取節點大小和叢集組態時,請牢記下列事項:

  • 我需要多少 CPU 處理能力?
  • 我需要儲存多少資料?
  • 選取的節點大小是否能夠處理預期的網路流量?
  • 我應該選擇何種叢集模式?

解決方案

我需要多少 CPU 處理能力?

檢閱節點選項

檢閱可用的節點選項。由於 Redis 是單一執行緒程序,因此當您將 CPU 新增至節點時,效能不會增加。節點上單個 CPU 核心的處理能力決定了效能。每個節點類型都有其自己的基準效能。與舊版相比,目前一代節點類型以更低的成本提供更多的記憶體和運算能力。例如,與 M4 和 R4 相比,M5 和 R5 執行個體以更低的成本提供更出色的效能

基準測試節點

最佳做法是對節點進行基準測試,以估計執行個體在預期工作負載上的效能。為此,請使用 redis-Benchmark 公用程式。如需有關基準建議的資訊,請參閱適當調整 Amazon ElastiCache Redis 叢集大小時要考慮的五個工作負載特性

執行基準測試時,請模擬應用程式流量的工作負載,包括要求數量、金鑰分佈和項目大小。監控 Amazon CloudWatch 指標,了解記憶體用量、處理器使用率、快取命中和快取未命中。您可能會注意到自己的叢集沒有所需的命中率,或者金鑰移出過於頻繁。如果發生這種情況,請選擇具有較大 CPU 和記憶體規格的不同節點大小。

由於 Redis 是單一執行緒,因此將報告的 CPU 用量乘以 CPU 核心數,以取得實際用量。例如,報告 20% 使用率的四核心 CPU 實際上是 Redis 以 80% 使用率執行的單一核心。

我需要儲存多少資料?

若要預估儲存需求,請將要快取的平均項目大小乘以同時在快取中的項目數目。若要估計項目大小,請序列化快取項目、計算字元數,然後將此總和除以叢集中的碎片數目。

請記住您的 Redis 版本的 reserved-memory 或 reserved-memory-percent 群組參數。此參數會預留記憶體以供非資料使用,例如系統備份和一般系統穩定性。依預設,此值會設定為最大記憶體的 25%。在確定足夠用於資料的記憶體大小時,請考慮這一點。

例如,cache.r4.large 有 12.3 GB 的可用記憶體供使用。由於您的預留記憶體設定為 25%,因此節點會儲存最多 9.2 GB (12.3 x 75%) 的資料。其餘的記憶體預留給其他 Redis 功能和系統穩定性。

我選取的節點類型是否能夠處理預期的網路流量?

請確定您選取的節點類型可以處理要推送的資料量,而不會達到網路上限。

若要判斷 ElastiCache 節點上的最大輸送量,請在類似的 Amazon Elastic Compute Cloud (Amazon EC2) 節點上執行基準測試。

例如,對於 cache.m4.large 節點,請在 EC2 m4.large 執行個體上執行測試。執行此測試會尋找節點理論上的最大輸送量。它還提供可在用戶端和 Redis 節點之間推送多少頻寬的估計值。最大化網路輸送量的常見副作用是頻寬圖表上會顯示一條平線,表示您正在最大限度利用硬體。如需使用 iperf3 測量執行個體之間網路效能的指示,請參閱如何在同一個 Amazon VPC 中的 Amazon EC2 Linux 執行個體之間對網路輸送量進行基準測試?

由於 ElastiCache 節點與其 EC2 對應節點類似,因此請檢視針對每個執行個體類型列出的網路效能。如果您要將節點的網路輸送量最大化,則可能需要選取較大的下一個節點大小以取得更出色的網路效能。例如,m4.large 執行個體具有中等網路功能。但是,如果您的工作負載最大化利用您的網路,而且效能不佳,請識別具有較佳網路效能的新節點類型。較佳的網路效能可能會在「定價」頁面的網路效能欄中列為10 Gigabit

請記住,網路效能也適用於用戶端。如果您的用戶端是具有低至中等網路效能的 t2.micro,並且您要將資料推送到 m4.10xlarge,那麼首先將用戶端上的網路輸送量最大化。

應該選擇什麼叢集模式?

依據流量為您的應用程式工作負載選擇正確的模式

如果叢集的主要負載包含讀取資料的應用程式,您可以選擇 Redis (叢集模式已停用) 叢集。然後。透過新增僅供讀取複本來擴展叢集以支援更多讀取作業。最多有 5 個僅供讀取複本。請記住,停用叢集模式的叢集只有一個碎片。因此,節點類型必須足夠大,以容納叢集的所有資料,以及必要的開銷。

如果叢集上的負載大量寫入,且您的寫入工作負載超過一個節點所能提供的負載,請使用 Redis (已啟用叢集模式) 叢集。啟用叢集模式的叢集將您的金鑰分散到多個主要節點之間。因此,寫入效能會在多個節點之間分割,而不是聚集於單一節點。

如果您有需要極高效能的大型工作負載,請針對每個碎片使用具有多個碎片和多個僅供讀取複本的已啟用叢集模式的叢集。例如,您可以建立每個主要節點包含 15 個碎片和 5 個複本的叢集。


此文章是否有幫助?


您是否需要帳單或技術支援?