管理 Valkey 和 Redis 的預留記憶體 OSS - Amazon ElastiCache

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

管理 Valkey 和 Redis 的預留記憶體 OSS

預留記憶體是為非資料使用預留的記憶體。執行備份或容錯移轉時,Valkey 和 Redis OSS會使用可用的記憶體,在叢集的資料寫入 .rdb 檔案時記錄對叢集的寫入操作。如果您沒有足夠的記憶體可供所有寫入使用,此程序會失敗。您可以在下面找到為 Redis ElastiCache 管理預留記憶體的選項OSS,以及如何套用這些選項的相關資訊。

您需要多少預留記憶體?

如果您在 2.8.22 OSS之前執行 Redis 版本,則相較於執行 Redis 2.8.22 OSS 或更新版本,請保留更多記憶體進行備份和容錯移轉。此要求是由於 ElastiCache Redis OSS實作備份程序的不同方式。經驗法則是為 2.8.22 之前的版本預留 Redis OSS額外負荷節點類型maxmemory值的一半,為 Redis 2.8.22 版及更新OSS版本預留四分之一。

由於 ElastiCache 實作備份和複寫程序的方式不同,經驗法則是使用 reserved-memory-percent 參數保留節點類型maxmemory值的 25%。這是預設值,建議大多數情況下使用。

當爆量微型和小型執行個體類型在接近maxmemory限制的情況下運作時,它們可能會遇到交換使用。為了改善這些執行個體類型在備份、複寫和高流量期間的操作可靠性,我們建議將reserved-memory-percent參數的值提高到小執行個體類型的 30%,微型執行個體類型的 50%。

對於具有資料分層之 ElastiCache 叢集上的寫入密集工作負載,我們建議將 增加reserved-memory-percent到節點可用記憶體的 50%。

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

用於管理預留記憶體的參數

截至 2017 年 3 月 16 日,Amazon ElastiCache 提供兩個互斥參數來管理您的 Valkey 或 Redis OSS記憶體,reserved-memory以及 reserved-memory-percent。這些參數都不是 Valkey 或 Redis OSS分佈的一部分。

視您成為 ElastiCache 客戶的時間而定,其中一個參數是預設記憶體管理參數。當您建立新的 Valkey 或 Redis OSS叢集或複寫群組並使用預設參數群組時,此參數適用。

  • 對於在 2017 年 3 月 16 日之前啟動的客戶 – 當您使用預設參數群組建立 Redis OSS叢集或複寫群組時,您的記憶體管理參數是 reserved-memory。這個情況下會保留零 (0) 位元組的記憶體。

  • 對於在 2017 年 3 月 16 日或之後啟動的客戶 - 當您使用預設參數群組建立 Valkey 或 Redis OSS叢集或複寫群組時,您的記憶體管理參數為 reserved-memory-percent。在這種情況下,會保留節點 maxmemory 值的 25% 用於非資料目的。

讀取兩個 Valkey 或 Redis OSS記憶體管理參數後,您可能偏好使用非預設或非預設值的參數。若是如此,您可以變更為另一個預留記憶體管理參數。

若要變更該參數的值,您可以建立自訂參數群組並進行修改,以使用您偏好的記憶體管理參數和值。然後,每當您建立新的 Valkey 或 Redis OSS叢集或複寫群組時,都可以使用自訂參數群組。若是現有的叢集或複寫群組,您可以進行修改來使用您的自訂參數群組。

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

reserved-memory 參數

在 2017 年 3 月 16 日之前,所有 ElastiCache 適用於 Redis OSS預留記憶體管理的 都是使用 參數 完成reserved-memoryreserved-memory 的預設值為 0。此預設值不會保留 Valkey 或 Redis OSS額外負荷的記憶體,並允許 Valkey 或 Redis 使用資料來OSS使用節點的所有記憶體。

您必須建立自訂參數群組,才能變更 reserved-memory,以便有足夠的記憶體可供備份和容錯移轉使用。在此自訂參數群組中,您會reserved-memory將 設定為適合叢集和叢集節點類型上執行的 Valkey 或 Redis OSS版本的值。如需詳細資訊,請參閱 您需要多少預留記憶體?

參數reserved-memory為特定參數 ElastiCache,不屬於一般 Redis OSS分佈。

下列程序說明如何使用 reserved-memory來管理 Valkey 或 Redis OSS叢集上的記憶體。

使用 reserved-memory 來保留記憶體
  1. 建立自訂參數群組,指定與您所執行引擎版本相符的參數群組系列,例如指定redis2.8 參數群組系列。如需詳細資訊,請參閱建立 ElastiCache 參數群組

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis6x-m3xl \ --description "Redis OSS 2.8.x for m3.xlarge node type" \ --cache-parameter-group-family redis6.x
  2. 計算要預留給 Valkey 或 Redis OSS額外負荷的記憶體位元組數。您可以在 Redis OSS節點類型特定參數中,找到您節點類型的 maxmemory 值。

  3. 修改自訂參數群組,將參數 reserved-memory 設為您在上一個步驟中計算得到的位元組數。下列 AWS CLI 範例假設您正在 2.8.22 OSS之前執行 Redis 版本,且需要保留節點的一半 maxmemory。如需詳細資訊,請參閱修改 ElastiCache 參數群組

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-m3xl \ --parameter-name-values "ParameterName=reserved-memory, ParameterValue=7130316800"

    您所使用的每個節點類型都需要個別的自訂參數群組,因為每個節點類型都有不同的 maxmemory 值。因此,每個節點類型都需要不同的 reserved-memory 值。

  4. 修改 Redis OSS叢集或複寫群組以使用您的自訂參數群組。

    下列CLI範例會修改叢集 my-redis-cluster,以立即redis28-m3xl開始使用自訂參數群組。如需詳細資訊,請參閱修改 ElastiCache 叢集

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-redis-cluster \ --cache-parameter-group-name redis28-m3xl \ --apply-immediately

    下列CLI範例會修改複寫群組my-redis-repl-grp,以立即redis28-m3xl開始使用自訂參數群組。如需更多詳細資訊,修改複寫群組

    aws elasticache modify-replication-group \ --replication-group-id my-redis-repl-grp \ --cache-parameter-group-name redis28-m3xl \ --apply-immediately

reserved-memory-percent 參數

Amazon 於 2017 年 3 月 16 日 ElastiCache 推出 參數,reserved-memory-percent並在所有版本的 ElastiCache for Redis 上提供該參數OSS。reserved-memory-percent 旨在簡化您所有叢集上的預留記憶體管理工作。其做法是讓您針對每個參數群組系列 (例如 redis2.8),各使用一個參數群組來管理叢集的預留記憶體,而不論節點類型為何。reserved-memory-percent 的預設值為 25 (25%)。

參數reserved-memory-percent為特定參數 ElastiCache ,不屬於一般 Redis OSS分佈。

如果您的叢集使用 r6gd 系列的節點類型,且您的記憶體使用量達到 75%,則會自動觸發資料分層。如需詳細資訊,請參閱中的資料分層 ElastiCache

使用 保留記憶體 reserved-memory-percent

若要使用 reserved-memory-percent 在 ElastiCache for Redis OSS叢集上管理記憶體,請執行下列其中一項操作:

  • 如果您執行 Redis OSS 2.8.22 或更新版本,請將預設參數群組指派給叢集。預設值 25% 應當足夠。如果為較舊的版本,請依照以下說明的步驟變更該值。

  • 如果您是在 2.8.22 OSS之前執行 Redis 版本,則可能需要保留比 reserved-memory-percent的預設 25% 更多的記憶體。若要完成此操作,請遵循下列程序:

變更 的百分比值 reserved-memory-percent
  1. 建立自訂參數群組,指定與您所執行引擎版本相符的參數群組系列,例如指定redis2.8 參數群組系列。必須有一個自訂參數群組,因為您無法修改預設參數群組。如需詳細資訊,請參閱建立 ElastiCache 參數群組

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --description "Redis OSS 2.8.x 50% reserved" \ --cache-parameter-group-family redis2.8

    由於 reserved-memory-percent 是以節點 maxmemory 的百分比為單位來預留記憶體,因此您不需要每個節點類型都有一個自訂參數群組。

  2. 修改自訂參數群組,將 reserved-memory-percent 設為 50 (50%)。如需詳細資訊,請參閱修改 ElastiCache 參數群組

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=50"
  3. 對執行 OSS Redis 早於 2.8.22 版本的任何 Redis OSS叢集或複寫群組使用此自訂參數群組。

    下列CLI範例會修改 Redis OSS叢集my-redis-cluster,以立即redis28-50開始使用自訂參數群組。如需詳細資訊,請參閱修改 ElastiCache 叢集

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-redis-cluster \ --cache-parameter-group-name redis28-50 \ --apply-immediately

    下列CLI範例會修改 Redis OSS複寫群組my-redis-repl-grp,以立即redis28-50開始使用自訂參數群組。如需詳細資訊,請參閱修改複寫群組

    aws elasticache modify-replication-group \ --replication-group-id my-redis-repl-grp \ --cache-parameter-group-name redis28-50 \ --apply-immediately

指定您的預留記憶體管理參數

如果您是 2017 年 3 月 16 日目前的 ElastiCache 客戶,您的預設預留記憶體管理參數reserved-memory為零 (0) 個位元組的預留記憶體。如果您在 2017 年 3 月 16 日之後成為 ElastiCache 客戶,您的預設預留記憶體管理參數為 reserved-memory-percent 25% 的節點記憶體預留。無論您在何時建立適用於 Redis OSS叢集或複寫群組 ElastiCache 的 ,都是如此。不過,您可以使用 AWS CLI 或 變更預留記憶體管理參數 ElastiCache API。

參數 reserved-memoryreserved-memory-percent 不會同時存在。每個參數群組一律只有一個參數,但絕不能兩者都有。您可以透過修改參數群組,來變更參數群組用於預留記憶體管理的參數。此參數群組必須是自訂參數群組,因為您無法修改預設參數群組。如需詳細資訊,請參閱建立 ElastiCache 參數群組

指定 reserved-memory-percent

若要使用 reserved-memory-percent 做為您的預留記憶體管理參數,請使用 modify-cache-parameter-group 命令修改自訂參數群組。使用 parameter-name-values 參數來指定 reserved-memory-percent 和其值。

下列CLI範例會修改自訂參數群組,redis32-cluster-on使其使用 reserved-memory-percent來管理預留記憶體。您必須指派一個值給 ParameterValue,參數群組才能使用 ParameterName 參數進行預留記憶體管理。如需詳細資訊,請參閱修改 ElastiCache 參數群組

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis32-cluster-on \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=25"
指定 reserved-memory

若要使用 reserved-memory 做為您的預留記憶體管理參數,請使用 modify-cache-parameter-group 命令修改自訂參數群組。使用 parameter-name-values 參數來指定 reserved-memory 和其值。

下列CLI範例會修改自訂參數群組,redis32-m3xl使其使用 reserved-memory來管理預留記憶體。您必須指派一個值給 ParameterValue,參數群組才能使用 ParameterName 參數進行預留記憶體管理。由於引擎版本是 2.8.22 以後的版本,因此我們會將值設為 3565158400,這是 cache.m3.xlarge 的 25% maxmemory。如需詳細資訊,請參閱修改 ElastiCache 參數群組

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis32-m3xl \ --parameter-name-values "ParameterName=reserved-memory, ParameterValue=3565158400"