變更我的 Amazon ElastiCache for Redis 節點類型時,該選項無法使用、變更未生效,或是收到錯誤訊息。我該如何疑難排解這些問題?
簡短描述
以下是變更 Redis 節點類型時發生問題的常見原因:
- 目標節點類型上的記憶體不足。
- 容量不足。
- 彈性網路界面不足。
- 指定的節點類型在可用區域中無法使用。
- Redis 引擎版本不支援目標節點類型。
- ApplyImmediately 參數設定為 false。
- 高節點使用率。
解決方案
**注意:**您可以使用 ElastiCache 事件 和 AWS CloudTrail 取得進一步的見解,並檢視相關的錯誤訊息。
目標節點類型上的記憶體不足
請確定新節點類型足以容納所有資料和所需 Redis 開銷。Amazon CloudWatch 提供 Amazon ElastiCache 下的 Redis 指標。請確定 BytesUsedForCache 指標中顯示的目前總記憶體使用量低於目標節點類型的容量上限。
如果 BytesUsedForCache 指標高於目標節點類型的容量上限,則您會收到下列錯誤訊息:
Failed to scale down to cache node type Replication Group <replication_group_name> because the node has insufficient memory. Please select a different node type or reduce current memory usage and retry.
**注意:**根據預設,每個快取節點都有 25% 的記憶體預留供非資料使用和背景寫入使用。此數量是在 reserved-memory-percent 參數中設定的。此預留記憶體可將用於快取資料的最大記憶體減少 25%。這表示可用於資料的記憶體容量較低。您可以修改預留的記憶體數量,以變更可用於快取資料的最大記憶體。此變更需要建立自訂參數群組,因為您無法修改預設參數群組。不過,將預留記憶體百分比設定為 0 可能會導致某些叢集作業 (例如快照) 失敗。
如需快取資料大小和記憶體使用量的相關指示,請參閱為什麼我無法縮減我的 ElastiCache 叢集規模?
容量不足
InsufficientCacheClusterCapacity 錯誤表明 Amazon ElastiCache 無法根據要求從指定的可用區域分配任意數量的執行個體。如需解決此錯誤的相關資訊,請參閱錯誤訊息:InsufficientCacheClusterCapacity。
彈性網路界面不足
請確定您有足夠的彈性網路界面容量。如有需要,請使用服務配額增加限值。如需詳細資訊,請參閱如果我已達到 AWS 區域中的限制,如何獲得更多彈性網路界面?
指定的節點類型在可用區域中不可用
如果您使用指定的可用區域中不支援的節點類型,則您會收到下列 InvalidParameterValue 錯誤訊息︰
Specified node type <node_type> is not available in AZ <availability_zone>
如需有關可用節點類型的指示,請參閱為什麼我無法縮減我的 ElastiCache 叢集規模?
Redis 引擎版本不支援目標節點類型
某些節點類型需要較高版本的 Redis 引擎。如需詳細資訊,請參閱支援的節點類型。
升級為此節點類型之前,請先升級 Redis 引擎版本。
ApplyImmediately 參數設定為 false
如果 ApplyImmediately 參數設定為 false,則會在下次維護重新開機或下次失敗重新開機時 (以先發生者為準) 套用複製群組中節點的變更。如果必須立即變更,請將此參數設定為 true。
**備註:**節點類型變更需要的時間取決於節點類型以及叢集中的資料量。最佳做法是在叢集的流量最低時執行升級。
高節點使用率
修改期間叢集上的繁重工作負載可能會干擾 ElastiCache 工作流程。最佳做法是在低資料流量時間內啟動節點修改。