選擇您的節點大小 - Amazon ElastiCache

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

選擇您的節點大小

您為 ElastiCache 叢集選取的節點大小會影響成本、效能和容錯能力。

節點大小 (Valkey 和 RedisOSS)

如需有關 Graviton 處理器優點的詳細資訊,請參閱 AWS  Graviton 處理器

回答下列問題可協助您判斷OSS您實作 Valkey 或 Redis 所需的最低節點類型:

  • 您是否預期會有具有多個用戶端連線的輸送量繫結工作負載?

    如果是這種情況,而且您執行的是 Redis 5.0OSS.6 版或更新版本,您可以使用我們增強的 I/O 功能來獲得更好的輸送量和延遲,其中可用 CPUs 代表 Redis OSS引擎卸載用戶端連線。如果您執行 Redis 7OSS.0.4 版或更新版本,除了增強型 I/O 之外,您還可以透過增強型 I/O 多工處理獲得額外的加速,其中每個專用網路 IO 執行緒管道都會從多個用戶端命令進入 Redis OSS引擎,利用 Redis OSS的 可有效率地分批處理命令的能力。在 ElastiCache (Redis OSS) v7.1 和更新版本中,我們擴展了增強的 I/O 執行緒功能,以處理呈現層邏輯。依呈現層而言,我們的意思是增強型 I/O 執行緒現在不僅正在讀取用戶端輸入,而且還會將輸入剖析為 Redis OSS 二進位命令格式,然後轉送到主執行緒以執行,從而提高效能。如需其他詳細資訊,請參閱部落格文章支援的版本頁面。

  • 您是否有經常存取少量資料的工作負載?

    如果是這種情況,而且您在 Redis OSS引擎 6.2 版或更新版本上執行,您可以選擇 r6gd 節點類型來利用資料分層。使用資料分層時,最近最少使用的資料會儲存在 中SSD。當檢索資料時,會有少量的延遲成本,可藉由成本節省加以抵銷。如需詳細資訊,請參閱中的資料分層 ElastiCache

    如需詳細資訊,請參閱支援的節點類型

  • 您的資料需要多少總記憶體?

    若要取得一般估計值,請使用要快取的項目大小。將此大小乘以您希望同時保持在快取中的項目數。若要取得合理的項目大小估計,收先請序列化您的快取項目,接著計算字元數。然後再除以您叢集中碎片數。

    如需詳細資訊,請參閱支援的節點類型

  • OSS 您正在執行什麼版本的 Redis?

    2.8.22 之前的 Redis OSS版本需要您為容錯移轉、快照、同步和將複本提升為主要操作預留更多記憶體。此需求的原因是您必須針對處理期間所有發生的寫入擁有足夠的記憶體。

    Redis 2.8.22 版及更新OSS版本使用無叉儲存程序,其所需的記憶體比先前程序更少。

    如需詳細資訊,請參閱下列內容:

  • 您應用程式所需要的大量寫入程度為何?

    需要大量寫入的應用程式可能需要在取得快照或容錯移轉時擁有大上許多的可用記憶體 (尚未由資料使用的記憶體)。每次執行 BGSAVE 處理序時,都必須有資料未使用的足夠記憶體,以容納執行 BGSAVE 處理序時產生的所有寫入。範例包括拍攝快照、使用叢集中的複本同步主要叢集,以及啟用僅附加檔案 (AOF) 功能。另一個範例是將複本提升為主要節點 (若您已啟用多個可用區) 時。最糟糕的情況是執行處理序過程中所有資料都被重寫。在這種情況下,節點執行個體的大小需為單純資料所需記憶體的兩倍。

    如需詳細資訊,請參閱確保您有足夠的記憶體來製作 Valkey 或 Redis OSS快照

  • 您的實作是獨立的 Valkey 或 Redis OSS(停用叢集模式) 叢集,還是具有多個碎片的 Valkey 或 Redis OSS(啟用叢集模式) 叢集?

    Valkey 或 Redis OSS(停用叢集模式) 叢集

    如果您要實作 Valkey 或 Redis OSS(停用叢集模式) 叢集,您的節點類型必須能夠容納所有資料,以及必要的額外負荷,如上一則所述。

    例如,假設您估計所有項目的總大小為 12 GB。在這種情況下,您可以使用具有 13.3 GB 記憶體的 cache.m3.xlarge 節點或記憶體為 13.5 GB 的 cache.r3.large 節點。但是,您可能需要更多記憶體以執行 BGSAVE 作業。如果您的應用程式需執行大量寫入,請將記憶體需求加倍為至少 24 GB。因此,可使用 cache.m3.2xlarge (含 27.9 GB 記憶體) 或 cache.r3.xlarge (含 30.5 GB 記憶體)。

    具有多個碎片的 Valkey 或 Redis OSS(啟用叢集模式)

    如果您要使用多個碎片實作 Valkey 或 Redis OSS(啟用叢集模式) 叢集,則節點類型必須能夠容納資料bytes-for-data-and-overhead / number-of-shards位元組。

    例如,假設您估計所有項目的總大小為 12 GB 且有兩個碎片。在這種情況下,您可以使用具有 6.05 GB 記憶體 (12 GB/2) 的 cache.m3.large 節點。但是,您可能需要更多記憶體以執行 BGSAVE 作業。如果您的應用程式需執行大量寫入,請將記憶體需求加倍為每個碎片至少 12 GB。因此,可使用 cache.m3.xlarge (含 13.3 GB 記憶體) 或 cache.r3.large (含 13.5 GB 記憶體)。

  • 您是否有使用 Local Zones?

    本機區域可讓您將 ElastiCache 叢集等資源放置在使用者附近的多個位置。但是選擇節點大小時請注意,無論容量要求為何,目前可用節點都會限制為下列大小:

    • 最新一代:

      M5 節點類型:cache.m5.largecache.m5.xlargecache.m5.2xlargecache.m5.4xlargecache.m5.12xlargecache.m5.24xlarge

      R5 節點類型:cache.r5.largecache.r5.xlargecache.r5.2xlargecache.r5.4xlargecache.r5.12xlargecache.r5.24xlarge

      T3 節點類型:cache.t3.microcache.t3.smallcache.t3.medium

當您的叢集執行時,您可以監控記憶體用量、處理器使用率、快取命中和快取遺漏發佈至 的指標 CloudWatch。您可能會注意到叢集沒有您想要的命中率,或是索引鍵被移出的頻率太頻繁。在這些情況下,您可以選擇具有較大CPU和記憶體規格的不同節點大小。

監控CPU用量時,請記住 Valkey 和 Redis OSS是單執行緒。因此,將報告的CPU用量乘以CPU核心數量,以取得實際用量。例如,CPU報告 20% 使用率的四核心實際上是 Redis 以 80% 使用率OSS執行的一個核心。

節點大小 (Memcached)

Memcached 叢集包含一或多個節點,其中叢集的資料會分割在各個節點中。因此,叢集的記憶體需求與節點的記憶體相關,但不相同。您可以透過擁有幾個大型節點或數個較小的節點,來達到您需要的叢集記憶體容量。除此之外,隨著您的需求變更,您可以新增節點或從叢集移除節點,來只為您需要的項目支付費用。

叢集的總記憶體容量的計算方式是將叢集中的節點數量乘以扣除系統額外負荷後每個節點的RAM容量。每個節點的容量是根據節點類型而定。

cluster_capacity = number_of_nodes * (node_capacity - system_overhead)

叢集中的節點數量是您執行 Memcached 叢集可用性的關鍵因素。單一節點發生故障,可能會影響您應用程式的可用性及後端資料庫的負載。在這種情況下, ElastiCache 會為失敗的節點佈建替換,然後重新填入節點。您可以將記憶體和運算容量分散到更多容量較小的節點間,而非使用少數具備高容量的節點,藉此降低此可用性影響。

在希望擁有 35 GB 快取記憶體的案例中,可以透過以下任一組態進行設定:

  • 11 個 cache.t2.medium 節點,其具備 3.22 GB 的記憶體及 2 個執行緒,合計 35.42 GB 和 22 個執行緒。

  • 6 個 cache.m4.large 節點,其具備 6.42 GB 的記憶體及 2 個執行緒,合計 38.52 GB 和 12 個執行緒。

  • 3 個 cache.r4.large 節點,其具備 12.3 GB 的記憶體及 2 個執行緒,合計 36.90 GB 和 6 個執行緒。

  • 3 個 cache.m4.xlarge 節點,其具備 14.28 GB 的記憶體及 4 個執行緒,合計 42.84 GB 和 12 個執行緒。

比較節點選項
節點類型 記憶體 (以 GiB 為單位) 核心 每小時成本 * 所需節點數 總記憶體 (以 GiB 為單位) 總核心數 每月成本 /
cache.t2.medium 3.22 2 0.068 USD 11 35.42 22 538.56 USD
cache.m4.large 6.42 2 0.156 USD 6 38.52 12 673.92 USD
cache.m4.xlarge 14.28 4 0.311 USD 3 42.84 12 671.76 USD
cache.m5.xlarge 12.93 4 0.311 USD 3 38.81 12 671.76 USD
cache.m6g.large 6.85 2 $ 0.147 6 41.1 12 $ 635
cache.r4.large 12.3 2 0.228 USD 3 36.9 6 492.48 USD
cache.r5.large 13.07 2 0.216 USD 3 39.22 6 466.56 USD
cache.r6g.large 13.07 2 $ 0.205 3 42.12 6 $ 442
* 截至 2020 年 10 月 8 日的每個節點小時成本。
用量 100%,持續 30 天 (720 小時) 的每月費用。

這些選項每個都能提供相似的記憶體容量,但不同的運算容量及成本。若要比較特定選項的成本,請參閱 Amazon ElastiCache Pricing

針對執行 Memcached 的叢集,每個節點上一部分的可用記憶體會用於連線額外負荷。如需詳細資訊,請參閱 Memcached 連線額外負荷

使用多個節點需要將索引鍵分散到這些節點當中。每個節點都有自己的端點。為了輕鬆管理端點,您可以使用 Auto Discovery ElastiCache 功能,讓用戶端程式自動識別叢集中的所有節點。如需詳細資訊,請參閱自動識別叢集中的節點 (Memcached)

在某些案例中,您可能不確定需要多少容量。這個情況下,建議從一個 cache.m5.large 節點開始測試。然後使用發佈至 Amazon 的 ElastiCache 指標來監控記憶體用量、CPU使用率和快取命中率 CloudWatch。如需 CloudWatch 指標的詳細資訊 ElastiCache,請參閱 監控與 CloudWatch 指標搭配使用。對於生產和較大的工作負載,R5 節點提供最佳效能和RAM成本值。

若您的叢集沒有達到所需的命中率,您可輕易新增更多節點來增加叢集中可用的總記憶體。

如果您的叢集受 約束,CPU但具有足夠的命中率,請使用節點類型來設定新的叢集,以提供更多運算能力。