排解問題

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

複製情境

本節說明執行個體可能發生的複製問題。

如何監控複製延遲?

Memorystore for Valkey 具有 /instance/replication/maximum_offset_diff 指標。這項指標會監控主要執行個體中節點的複製偏移差異上限 (以位元組為單位)。

如果複寫偏移差異較小,副本就能更頻繁地執行增量同步作業,且成本比完整同步作業更低。

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

根據執行個體的節點類型,建議您設定的門檻如下:

  • 如果節點類型為 shared-core-nano、custom-pico、custom-micro、custom-mini、standard-small、highmem-medium、highcpu-medium 或 standard-large,請將閾值設為小於 64 MB。

  • 如果節點類型為 highmem-xlarge 或 highmem-2xlarge,請將門檻設為小於 1 GB。

如果主要執行個體與備用資源之間出現複製延遲,該怎麼辦?

如果主要執行個體有太多寫入作業,而備用資源無法趕上複製這些作業,就可能會出現明顯的複製延遲。如要解決這個問題,建議您增加執行個體的分片數量,藉此擴充執行個體的容量。

CPU 使用率情境

本節說明執行個體可能遇到的 CPU 使用率問題。

如果執行個體的輸出緩衝區空間不足,該怎麼辦?

如果 Memorystore for Valkey 執行個體的輸出緩衝區空間不足,請按照下列步驟操作:

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

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

為什麼執行個體可能缺少外部指標?

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

如何找出執行個體延遲的來源?

如要判斷您遇到的延遲問題是源自於執行個體、用戶端應用程式還是網路環境,請使用 valkey-cli 工具執行持續延遲測試。

如要找出執行個體延遲的來源,請按照下列步驟操作:

  1. 連線至與執行個體位於相同區域和虛擬私有雲網路的 Compute Engine VM。

  2. 如果尚未安裝,請在 VM 上安裝 valkey-cli 工具。

    • 如為 Debian 或 Ubuntu 型 VM,請執行下列指令:

      sudo apt-get install valkey-tools
      
    • 如為以 RHEL 或 CentOS 為基礎的 VM,請執行下列指令:

      sudo yum install valkey-tools
      
  3. 如要以毫秒為單位測量執行個體的延遲時間,請執行下列指令:

    redis-cli --latency -h ENDPOINT_ADDRESS -p PORT
    

    如果執行個體使用傳輸中資料加密,請附加 --tls 旗標,並指定憑證授權單位 (CA) 以進行連線。

    請將下列項目改為對應的值:

    • ENDPOINT_ADDRESS:執行個體端點的 IP 位址。
    • PORT:為執行個體端點保留的通訊埠號碼。這個通訊埠號碼通常為 6379。
  4. 讓指令執行幾分鐘。這項工具會持續對伺服器執行 Ping,並計算延遲時間的最小值、最大值和平均值。

  5. 如要停止指令並查看結果,請按 Ctrl+C。

如果指令輸出結果的平均延遲時間持續偏低 (通常為 1 毫秒以下),表示執行個體運作正常,且回應速度很快。

如果指令顯示的延遲時間一向很短,但用戶端應用程式仍會延遲,則可能是下列問題導致延遲:

  • 網路:在用戶端和執行個體之間,跨不同區域或可用區傳輸的流量可能會造成明顯的網路延遲。
  • 用戶端:用戶端 CPU 或記憶體使用率偏高、連線集區耗盡,或是應用程式邏輯出現瓶頸,都可能導致用戶端體驗到的總封包往返時間增加。

記憶體管理情境

本節說明執行個體可能遇到的記憶體管理問題。

您可以使用哪項指標,判斷執行個體是否處於記憶體壓力狀態?

如要監控 Memorystore for Valkey 執行個體的記憶體用量,建議您查看 /instance/memory/maximum_utilization 指標。如果執行個體的記憶體用量接近 80%,且您預期數據用量會增加,請擴充執行個體的大小,以提升效能並為新資料騰出空間。

監控情境

本節說明執行個體可能遇到的監控問題。

如何為 Memorystore for Valkey 設定快訊?

您可以透過 Cloud Monitoring 設定快訊,在任何指標超過您為執行個體設定的門檻時收到通知。如要進一步瞭解如何在 Cloud Monitoring 中設定快訊,請參閱「設定記憶體用量的 Monitoring 快訊」。

連線管理情境

本節說明執行個體可能遇到的連線管理問題。

如果達到連線上限或連線逾時,該怎麼辦?

達到連線上限時,用戶端就無法連線至伺服器。這就是所謂的「連線遭拒」。

如果發生這種情況,請按照下列步驟操作:

逾時情境

本節說明執行個體可能遇到的逾時問題。

如果收到 I/O 逾時訊息,該怎麼辦?

如果 Memorystore for Valkey 中的讀取或寫入作業無法在指定時間內完成,就會發生 I/O 逾時。逾時的原因有很多,舉例來說,執行個體的一或多個節點可能過載。

如果收到 I/O 超時訊息,請按照下列步驟操作:

連線錯誤情境

本節說明執行個體可能遇到的連線問題。

防火牆規則導致連線錯誤

如果防火牆未開放正確的通訊埠,執行個體可能會發生連線錯誤,因為防火牆可能會封鎖 Memorystore for Valkey 使用的通訊埠。

您必須允許 TCP 通訊埠 6379,以及 TCP 通訊埠 11000 至 13047,才能使用執行個體的所有 Private Service Connect 端點。如要進一步瞭解這些端點,請參閱「保留的網路位址」。

機構政策導致連線錯誤

您可能設有機構政策,禁止 Private Service Connect 連線至 Memorystore for Valkey 執行個體。

如果貴機構政策使用 .restrictPrivateServiceConnectProducer policy,請將 672235397475 資料夾編號加入允許清單,這個資料夾專門用於 Memorystore for Valkey。例如:

name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
    rules:
      - values:
          allowedValues:
          - under:folders/672235397475

如果貴機構政策使用 .disablePrivateServiceConnectCreationForConsumers 政策,請將 allowlist SERVICE_PRODUCERS。例如:

name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
    rules:
      - values:
          allowedValues:
          - SERVICE_PRODUCERS

連線無回應導致連線錯誤

我們強烈建議您設定用戶端應用程式,偵測與 Memorystore for Valkey 的連線是否沒有回應。系統偵測到連線沒有回應時,用戶端必須重設連線。如要建構彈性應用程式,建議採用下列用戶端設定:

  • 設定 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 秒後重設有待處理要求的無回應連線。

處理已停用叢集模式執行個體的錯誤

  • 如果應用程式連線至沒有讀取副本的執行個體讀取端點,連線就會關閉,並顯示 ERR no replicas found 錯誤訊息。在這種情況下,請嘗試將應用程式連線至主要端點,或在執行個體中新增讀取副本。

  • 發生容錯移轉時,應用程式的現有連線會關閉,並顯示 ERR role change occurred 錯誤訊息。如果應用程式連線至執行個體的讀取端點,且執行個體的所有讀取副本都失敗,您也會看到這則錯誤訊息。在這種情況下,應用程式必須以指數輪詢方式重試連線。

保留情境

本節說明執行個體可能發生的持續性問題。

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

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

Memorystore for Valkey 實作了防護措施,可調控寫入輸送量。 確保 AOF 重寫作業能跟上持續的高寫入工作負載。