本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
線上叢集大小調整
「重新碎片」涉及將碎片或節點新增到您的叢集或從叢集移除碎片或節點,並重新分配鍵的空間。多項事物會對重新碎片操作造成影響,例如叢集上的負載、記憶體使用率,以及整體資料大小。為了取得最佳體驗,我們建議您遵循統一工作負載模式分佈的整體叢集最佳實務。此外,我們建議您採取以下步驟。
在初始化重新碎片前,我們建議以下內容:
測試您的應用程式 - 在預備環境中測試應用程式於重新分片期間的行為 (若可能的話)。
-
提早取得擴展問題的通知 - 重新分片是一項需要大量運算的操作。因此,我們建議在重新分割期間,將多核心執行個體的使用CPU率保持在 80% 以下,將單一核心執行個體的使用率保持在 50% 以下。在應用程式開始觀察擴展問題之前,監控 ElastiCache (Redis OSS) 指標並啟動重新分配。可進行追蹤的有用指標包括
CPUUtilization
、NetworkBytesIn
、NetworkBytesOut
、CurrConnections
、NewConnections
、FreeableMemory
、SwapUsage
及BytesUsedForCacheItems
。 在向內擴展前確保有足夠的可用記憶體 - 若您要向內擴展,請確保碎片上保留的可用記憶體至少是待移除碎片所使用記憶體的 1.5 倍。
在離峰時段期間起始重新分片程序 - 此做法有助於減少重新分片作業期間的延遲,以及對用戶端造成的輸送量影響。它也有助於更快完成重新碎片,因為有更多的資源可用於重新分配位置。
檢閱用戶端逾時行為 - 有些用戶端可能會在線上叢集調整大小期間產生較高的延遲。使用較高的逾時設定您的用戶端程式庫,有助於解決該情況,即使伺服器上負載較高,系統仍有時間連線。在某些情況下,您可能想要對伺服器開啟大量連線。在這些情況下,請考慮將指數退避新增到重新連線邏輯。這麼做可幫助防止爆量的新連線同時衝擊伺服器。
在每個碎片上載入函數 – 向外擴展叢集時, ElastiCache 會自動將其中一個現有節點 (隨機選取) 中載入的函數複寫到新的節點。如果您的叢集具有 Valkey 7.2 及更高版本,或 Redis OSS 7.0 或更高版本,且您的應用程式使用函數
,建議您先將所有函數載入所有碎片,然後再向外擴展,這樣您的叢集就不會在不同的碎片上最後出現不同的函數。
在重新碎片之後,請注意以下內容:
-
若目標碎片上的可用記憶體不足,向內擴展可能會僅部分成功。若發生這種結果,請檢閱可用記憶體,並視需要重試操作。目標碎片上的資料不會遭刪除。
擁有大量項目的位置不會進行遷移。特別是擁有大於 256 MB 項目位置的後序列化不會進行遷移。
在重新分片操作期間,Lua 指令碼內不支援
FLUSHALL
和FLUSHDB
命令。在 Redis OSS 6 之前,如果命令在要遷移的插槽上操作,則不支援該BRPOPLPUSH
命令。