排解問題

本頁面說明各種錯誤情況,並提供解決錯誤的指引。

複製情境

本節說明叢集可能發生的複製問題。

如何監控複製延遲?

Memorystore for Redis Cluster 具有 /cluster/replication/maximum_offset_diff 指標。這項指標會監控主要叢集中節點的最大複製偏移差異 (以位元組為單位)。

如果複本的複製偏移差異較小,複本就能以較低的成本,更頻繁地執行增量同步作業,而非完整同步作業。

建議您為 maximum_offset_diff 指標設定門檻。如果超過門檻,Memorystore for Redis Cluster 可以透過快訊通知您。

根據叢集的節點類型,建議您設定的門檻如下:

  • 如果節點類型為 redis-shared-core-nanoredis-standard-smallredis-highmem-mediumredis-highcpu-mediumredis-standard-large,請將閾值設為小於 64 MB。

  • 如果節點類型為 redis-highmem-xlargeredis-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 timeTCP keepalive intervalTCP keepalive probes 參數,讓用戶端主動偵測並捨棄沒有回應的連線,即使連線處於閒置狀態也一樣。舉例來說,如果將 TCP keepalive time 參數設為 30 秒、TCP keepalive interval 設為 10 秒,且 TCP keepalive probes 設為 3,則用戶端會在 1 分鐘內重設無回應的閒置連線。
  • 設定 TCP 使用者逾時:在用戶端中設定這個逾時時間,即可重設有待處理要求且停止回應的連線。舉例來說,如果將逾時時間設為 15 秒,用戶端就會在 15 秒後重設有待處理要求但沒有回應的連線。

CPU 使用率情境

本節說明叢集可能遇到的 CPU 使用率問題。

叢集的輸出緩衝區空間不足

如果叢集的輸出緩衝區空間不足,請採取下列做法:

當叢集的記憶體已滿,但有新的寫入作業要執行時,Memorystore for Redis Cluster 會根據叢集的 maxmemory 政策撤銷金鑰,以便釋出空間來執行寫入作業。allkeys-lru 政策會從整個鍵集移除最近最少使用的 (LRU) 金鑰。

建議您監控叢集的 maxmemory 和已用記憶體。這有助於瞭解叢集是否達到佈建的叢集容量。此外,減少 maxmemory 參數的值,可為額外負荷爭取更多空間。

為什麼叢集可能缺少外部指標?

如果叢集的 CPU 使用率偏高,或是叢集資源耗盡 (例如連線過多),叢集可能會發生異常行為,且外部指標可能會遺失。

保留情境

本節說明叢集可能發生的持續性問題。

您的寫入流量超過 Memorystore for Redis Cluster 的能力,無法透過 AOF 重寫來壓縮及回收空間

如果發生這種情況,則唯讀附加檔案 (AOF) 的成長速度會比重寫程序可管理的快。這會導致磁碟耗盡、寫入失敗,並封鎖需要建立副本和完整同步處理的作業。

Memorystore for Redis Cluster 實作了安全措施,可調控寫入處理量。確保 AOF 重寫作業能跟上持續的高寫入工作負載。