本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理 Valkey 和 Redis 的預留記憶體 OSS
預留記憶體是為非資料使用預留的記憶體。執行備份或容錯移轉時,Valkey 和 Redis OSS會使用可用的記憶體,在叢集的資料寫入 .rdb 檔案時記錄對叢集的寫入操作。如果您沒有足夠的記憶體可供所有寫入使用,此程序會失敗。接下來,您可以找到管理 ElastiCache (Redis OSS) 預留記憶體的選項,以及如何套用這些選項的相關資訊。
您需要多少預留記憶體?
如果您在 2.8.22 OSS之前執行 Redis 版本,則保留比執行 Redis 2.8.22 OSS 或更新版本更多的備份和容錯移轉記憶體。此要求是由於 ElastiCache (Redis OSS) 實作備份程序的不同方式所致。經驗法則是為 2.8.22 之前的版本保留節點類型maxmemory
值的一半OSS,為 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-memory
。reserved-memory
的預設值為 0。此預設值不會保留 Valkey 或 Redis OSS額外負荷的記憶體OSS,並允許 Valkey 或 Redis 使用資料來耗用節點的所有記憶體。
您必須建立自訂參數群組,才能變更 reserved-memory
,以便有足夠的記憶體可供備份和容錯移轉使用。在此自訂參數群組中,您可以針對叢集和叢集節點類型上執行的 Valkey 或 Redis OSS版本reserved-memory
,將 設定為適當的值。如需詳細資訊,請參閱 您需要多少預留記憶體?
參數reserved-memory
為特定 ElastiCache參數,且不屬於一般 Redis OSS分佈。
下列程序說明如何使用 reserved-memory
來管理 Valkey 或 Redis OSS叢集上的記憶體。
使用 reserved-memory 來保留記憶體
-
建立自訂參數群組,指定與您所執行引擎版本相符的參數群組系列,例如指定
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-familyredis6.x
-
計算要保留給 Valkey 或 Redis OSS額外負荷的記憶體位元組數。您可以在 Redis OSS節點類型特定參數中,找到您節點類型的
maxmemory
值。 -
修改自訂參數群組,將參數
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
值。 -
修改 Redis OSS叢集或複寫群組以使用您的自訂參數群組。
下列CLI範例會修改叢集
my-redis-cluster
,以立即redis28-m3xl
開始使用自訂參數群組。如需詳細資訊,請參閱修改 ElastiCache 叢集。aws elasticache modify-cache-cluster \ --cache-cluster-id
my-redis-cluster
\ --cache-parameter-group-nameredis28-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-nameredis28-m3xl
\ --apply-immediately
參數 reserved-memory-percent
Amazon 於 2017 年 3 月 16 日 ElastiCache 推出 參數,reserved-memory-percent
並在所有 版本上提供 ElastiCache (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 (Redis OSS) 叢集上的記憶體,請執行下列其中一項操作:
-
如果您執行 Redis OSS 2.8.22 或更新版本,請將預設參數群組指派給叢集。預設值 25% 應當足夠。如果為較舊的版本,請依照以下說明的步驟變更該值。
-
如果您在 2.8.22 OSS之前執行 Redis 版本,則可能需要保留比
reserved-memory-percent
的預設 25% 更多的記憶體。若要完成此操作,請遵循下列程序:
若要變更 的百分比值 reserved-memory-percent
-
建立自訂參數群組,指定與您所執行引擎版本相符的參數群組系列,例如指定
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-familyredis2.8
由於
reserved-memory-percent
是以節點maxmemory
的百分比為單位來預留記憶體,因此您不需要每個節點類型都有一個自訂參數群組。 -
修改自訂參數群組,將
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
" -
針對執行 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-nameredis28-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-nameredis28-50
\ --apply-immediately
指定您的預留記憶體管理參數
如果您是 2017 年 3 月 16 日目前的 ElastiCache 客戶,您的預設預留記憶體管理參數reserved-memory
為預留記憶體的零 (0) 位元組。如果您在 2017 年 3 月 16 日之後成為 ElastiCache 客戶,您的預設預留記憶體管理參數為 25% reserved-memory-percent
的節點記憶體預留。無論您在何時建立 ElastiCache (Redis OSS) 叢集或複寫群組,都是如此。不過,您可以使用 或 AWS CLI 變更預留記憶體管理參數 ElastiCache API。
參數 reserved-memory
和 reserved-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
"