本頁面說明各種錯誤情況,並提供解決錯誤的指引。
複製情境
本節說明叢集可能發生的複製問題。
如何監控複製延遲?
Memorystore for Redis Cluster 具有 /cluster/replication/maximum_offset_diff 指標。這項指標會監控主要叢集中節點的最大複製偏移差異 (以位元組為單位)。
如果複本的複製偏移差異較小,複本就能以較低的成本,更頻繁地執行增量同步作業,而非完整同步作業。
建議您為 maximum_offset_diff 指標設定門檻。如果超過門檻,Memorystore for Redis Cluster 可以透過快訊通知您。
根據叢集的節點類型,建議您設定的門檻如下:
如果節點類型為
redis-shared-core-nano、redis-standard-small、redis-highmem-medium、redis-highcpu-medium或redis-standard-large,請將閾值設為小於 64 MB。如果節點類型為
redis-highmem-xlarge或redis-highmem-2xlarge,請將門檻設為小於 1 GB。
連線錯誤情境
本節說明叢集可能遇到的連線問題。
防火牆規則導致連線錯誤
防火牆規則可能會封鎖 Memorystore for Redis Cluster 使用的通訊埠,導致連線錯誤。針對叢集的兩個 Private Service Connect 端點,允許使用 TCP 通訊埠 11000 至 13047。如要進一步瞭解這些端點,請參閱「保留的網路位址」。
機構政策導致連線錯誤
您可能設有組織政策,禁止 Private Service Connect 連線連往叢集。
如果貴機構政策使用 .restrictPrivateServiceConnectProducer 政策,請允許 961333125034 資料夾,這個資料夾專供 Memorystore for Redis Cluster 使用。例如:
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
rules:
- values:
allowedValues:
- under:folders/961333125034
如果機構政策使用 .disablePrivateServiceConnectCreationForConsumers 政策,請允許 SERVICE_PRODUCERS。例如:
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
rules:
- values:
allowedValues:
- SERVICE_PRODUCERS
連線無回應導致連線錯誤
強烈建議您設定用戶端應用程式,偵測與 Memorystore for Redis Cluster 的連線是否沒有回應。系統偵測到連線沒有回應時,用戶端必須重設連線。如要建構彈性應用程式,建議採用下列用戶端設定:
- 設定 TCP keep-alive 參數:設定
TCP keepalive time、TCP keepalive interval和TCP keepalive probes參數,讓用戶端主動偵測並捨棄沒有回應的連線,即使連線處於閒置狀態也一樣。舉例來說,如果將TCP keepalive time參數設為 30 秒、TCP keepalive interval設為 10 秒,且TCP keepalive probes設為 3,則用戶端會在 1 分鐘內重設無回應的閒置連線。 - 設定 TCP 使用者逾時:在用戶端中設定這個逾時時間,即可重設有待處理要求且停止回應的連線。舉例來說,如果將逾時時間設為 15 秒,用戶端就會在 15 秒後重設有待處理要求但沒有回應的連線。
CPU 使用率情境
本節說明叢集可能遇到的 CPU 使用率問題。
叢集的輸出緩衝區空間不足
如果叢集的輸出緩衝區空間不足,請採取下列做法:
- 為
maxmemory參數設定較小的值。 - 使用
allkeys-lrumaxmemory政策。
當叢集的記憶體已滿,但有新的寫入作業要執行時,Memorystore for Redis Cluster 會根據叢集的 maxmemory 政策撤銷金鑰,以便釋出空間來執行寫入作業。allkeys-lru 政策會從整個鍵集移除最近最少使用的 (LRU) 金鑰。
建議您監控叢集的 maxmemory 和已用記憶體。這有助於瞭解叢集是否達到佈建的叢集容量。此外,減少 maxmemory 參數的值,可為額外負荷爭取更多空間。
為什麼叢集可能缺少外部指標?
如果叢集的 CPU 使用率偏高,或是叢集資源耗盡 (例如連線過多),叢集可能會發生異常行為,且外部指標可能會遺失。
保留情境
本節說明叢集可能發生的持續性問題。
您的寫入流量超過 Memorystore for Redis Cluster 的能力,無法透過 AOF 重寫來壓縮及回收空間
如果發生這種情況,則唯讀附加檔案 (AOF) 的成長速度會比重寫程序可管理的快。這會導致磁碟耗盡、寫入失敗,並封鎖需要建立副本和完整同步處理的作業。
Memorystore for Redis Cluster 實作了安全措施,可調控寫入處理量。確保 AOF 重寫作業能跟上持續的高寫入工作負載。