Memorystore for Valkey 常見問題

本頁面提供下列常見問題的解答,協助您瞭解如何使用 Memorystore for Valkey:

建議使用多少記憶體和 CPU?

建議記憶體用量不要超過 80%。此外,我們建議您以平均 CPU 使用率 60% 的狀態執行。因此,您可以容許單一可用區的損失,這大約是總容量的三分之一。在這個情境中,其餘節點的平均 CPU 使用率約為 90%。

如何監控 CPU 和記憶體用量?

如要監控主要 Memorystore for Valkey 節點和任何讀取副本的 CPU 使用率,請使用 /instance/cpu/maximum_utilization 指標。這項指標會測量執行個體中所有節點的最大 CPU 使用率,範圍從 0.0 (0%) 到 1.0 (100%)。詳情請參閱「CPU 使用率最佳做法」。

如要監控主要 Memorystore for Valkey 節點及其讀取副本使用的記憶體,請使用 /instance/node/memory/utilization 指標。這項指標會測量執行個體中單一節點的記憶體使用率,範圍從 0.0 (0%) 到 1.0 (100%)。

如何設定快訊來監控 CPU 和記憶體用量?

如要為 CPU 和記憶體用量設定監控快訊,請使用 Cloud Monitoring。舉例來說,您可以設定快訊,讓系統在 /instance/memory/maximum_utilization 指標超過您設定的門檻時通知您。詳情請參閱「設定記憶體用量監控快訊」。

建議您保持開啟多少個用戶端應用程式連線?

建議您使用客戶的基準來判斷最佳設定。建議每個用戶端從每個 Valkey 節點建立一個連線做為起點。詳情請參閱「避免 Valkey 連線過載」。

此外,我們也建議您為用戶端啟用管道化,讓用戶端可以處理更多要求,並加快處理速度。

如何監控執行個體的用戶端連線數量?

如要監控使用的用戶端連線數,請使用 /instance/node/clients/connected_clients 指標。這項指標會測量連線至執行個體各節點的用戶端數量。

如果用戶端連線過多,該怎麼辦?

使用 /instance/clients/maximum_connected_clients 指標可找出用戶端連線數上限,該值必須小於與 maxclients 參數相關聯的值。如果值相等,請執行下列操作:

假設您即將舉辦活動,預計會為商家帶來流量高峰,您應該怎麼做?

您可以設定 Memorystore for Valkey,滿足業務需求。在這種情況下,您可以透過下列方式提高執行個體的容量:

  • 您可以將分片新增至執行個體。這樣一來,執行個體就能使用更多 CPU 處理大量資料或流量。執行個體的容量取決於執行個體中的分片數量。新增分片後,應用程式就能處理增加的需求,而不會降低效能。
  • 您可以將節點類型變更為較大的節點類型。這樣執行個體就能獲得更多記憶體。執行個體的容量取決於執行個體的節點類型。舉例來說,您可以將節點類型從 standard-small 節點類型變更為 highmem-medium 節點類型。

建議您在活動開始前幾天增加執行個體的容量。此外,為協助您擴充執行個體的容量,並提高執行個體的擴充速度和可靠性,請在流量較低的時段擴充執行個體。如要瞭解如何監控執行個體流量,請參閱「監控執行個體」一文。

如何確保資料安全?

為確保資料安全,Memorystore for Valkey 提供下列機制:

  • 身分與存取權管理 (IAM) 驗證:使用 IAM 管理使用者和服務帳戶的登入存取權。以 IAM 為基礎的驗證機制會與 Valkey AUTH 整合,讓您順暢地輪替憑證 (IAM 權杖),不必使用靜態密碼。
  • 傳輸中資料加密: 使用傳輸層安全標準 (TLS) 通訊協定加密所有 Valkey 流量。 啟用傳輸中資料加密機制後,Valkey 用戶端會透過安全連線進行通訊。系統會封鎖未設定 TLS 的 Valkey 用戶端。

用戶端程式碼的最佳做法為何?

如要以最佳方式搭配使用用戶端程式碼和 Memorystore for Valkey,建議您採用下列最佳做法:

  • 如要將應用程式連線至啟用叢集模式的 Memorystore for Valkey Cluster Mode Enabled 執行個體,請使用我們建議的用戶端,例如 valkey-goiovalkeyvalkey-pyValkey GLIDE

    如果您使用其他用戶端,請務必使用叢集感知 Valkey 用戶端,維護雜湊值位置對應至執行個體中相應節點的地圖。因此要求可以傳送至正確的節點。這可避免重新導向造成的效能負擔。詳情請參閱「Valkey 用戶端最佳做法」。

  • 建議您將連線逾時間隔設為 5 秒,要求逾時間隔設為 10 秒。如果將逾時時間設為較小的間隔,Memorystore for Valkey 可能會發生重新連線風暴,導致服務面臨風險。

  • 當用戶端定期重試失敗的要求,並逐漸增加每次要求之間的延遲時間時,請使用指數輪詢做為網路應用程式的標準錯誤處理策略。

  • 使用我們的用戶端程式庫程式碼範例。舉例來說,valkey-go 用戶端的預設值符合所有建議,因此您不必為這個用戶端進行任何設定。

資料復原能力有哪些選項?

Memorystore for Valkey 提供下列資料復原功能:

  • 高可用性:Memorystore for Valkey 會在副本節點中提供備援容量。如果發生故障,Memorystore for Valkey 就能使用這項容量運作,不會發生任何停機時間。

  • 持續性:當環境發生意外當機時,Memorystore for Valkey 會自動還原環境。這就是所謂的持續性

    Memorystore for Valkey 提供下列類型的持久性:

    • Redis 資料庫 (RDB) 持久性:將資料快照儲存至持久儲存空間,保護資料安全。您可以選取快照間隔,選擇這些快照的頻率。 如果發生節點故障,即使無法進行容錯移轉,您仍可復原資料。

    • 僅限附加檔案 (AOF) 持久性:如果您想優先確保資料持久性,請使用這類持久性。AOF 持久化會將每項寫入指令記錄到名為 AOF 檔案的記錄檔,以持久儲存資料。如果發生系統故障或重新啟動,伺服器會依序重新執行 AOF 檔案指令,以還原資料。

  • 備份:手動將 Memorystore for Valkey 執行個體還原至特定時間點。此外,您也可以使用備份資料匯出及分析資料。

    備份功能適用於下列情境:

    • 災難復原:將備份資料納入災難復原計畫。如果發生災害,您可以將資料還原至新的 Memorystore for Valkey 執行個體。
    • 資料遷移:在不同的 Memorystore for Valkey 執行個體之間遷移資料。您可以整合資料,或將資料移至其他區域。您也可以從 Memorystore for Valkey 執行個體還原備份。
    • 共用資料:在不同團隊或應用程式之間共用資料。這有助於協作、離線資料分析和資料交換。
    • 法規遵循:定期備份快取資料,以符合法規要求。
    • 安排備份時間:除了建立隨選備份外,您還可以為執行個體設定備份排程。因此,Memorystore for Valkey 會啟動執行個體的定期備份作業。
  • 跨區域複製:從主要執行個體建立次要執行個體,讓執行個體可在不同區域讀取資料。如果發生區域性服務中斷情形,次要執行個體也能提供災難復原情境的備援。

    Memorystore for Valkey 的跨區域複寫功能可提供下列優點:

    • 災難復原:如果主要執行個體所在的區域無法使用,您可以分離或切換至另一個區域的次要執行個體,以處理讀取和寫入要求。次要執行個體會處理讀取要求,不會發出切換或分離指令。
    • 地理區域分散式資料:將資料分散到不同地理區域,可讓資料更靠近您,並縮短讀取延遲時間。
    • 讀取流量的地理位置負載平衡:如果某個區域的連線速度緩慢或過載,您可以將流量導向其他區域。

如何讓執行個體發揮最佳效能?

如要提升 Memorystore for Valkey 執行個體的效能,請採取下列做法:

  • 請遵循記憶體管理CPU 使用率的最佳做法,因為這些做法可讓執行個體達到最佳效能。
  • 使用稽核記錄監控執行個體的存取權。因此,您可以判斷執行個體管理員活動 (Admin Activity 稽核記錄) 或存取執行個體資料的使用者 (Data Access 稽核記錄) 是否有任何相關問題。
  • 使用唯讀備用資源。在 Memorystore for Valkey 中,複製作業是非同步的。因此,主要節點中的資料不會立即顯示在副本中。如果可以處理稍微過時的資料,請使用讀取副本。這可大幅提升讀取輸送量,並縮短延遲時間。
  • 避免使用耗用大量資源的 Valkey 指令。使用這些指令可能會導致下列效能問題:

    • 延遲時間長和用戶端逾時
    • 因增加記憶體用量的指令而導致記憶體壓力
    • 節點複製和同步處理期間發生資料遺失,因為 Valkey 主執行緒遭到封鎖
    • 健康狀態檢查資源不足、可觀測性和複製

    請改用更節省資源的指令,而非這些指令。舉例來說,如要掃描整個鍵空間,請勿使用 KEYS 指令。請改用 SCAN

    如要進一步瞭解耗用大量資源的 Valkey 指令,以及可有效節省資源的替代指令,請參閱「耗用大量資源的 Valkey 指令」。

  • 如果業務需求允許您為資料設定到期時間,建議您這麼做。設定到期時間可減少記憶體耗用量。

  • 升級 Memorystore for Valkey 執行個體的版本,改用最新執行個體版本。新版軟體可提升穩定性和效能。

  • 修改 maxmemory-policy 參數的值。這個參數會指定當執行個體資料達到 maxmemory 限制時,Valkey 應採取的行為。

    當執行個體的記憶體已滿,但有新的寫入作業要執行時,Valkey 會根據執行個體的maxmemory政策撤銷金鑰,以便釋出足夠空間來執行寫入作業。如果
    maxmemory-policy 參數的值設為 noeviction,當執行個體達到記憶體上限時,Memorystore for Valkey 會傳回錯誤。不過,Memorystore for Valkey 不會覆寫或逐出資料。如要提高執行個體的可用性,請變更 maxmemory-policy 參數的值,讓 Memorystore for Valkey 可以逐出鍵。

    如要進一步瞭解可為 maxmemory-policy 參數設定的不同值,請參閱「Maxmemory 政策」。如要進一步瞭解如何更新這項參數,請參閱更新設定參數

  • 調整 Memorystore for Valkey 執行個體,達到所需的快取命中率。這有助於將資料庫調整為適當大小,以便處理適當比例的點擊次數。

    如要調整執行個體,請按照下列步驟操作:

    1. 使用 total_keyspace_hits_counttotal_keyspace_misses_count 監控指標,分別判斷執行個體成功查閱金鑰的總次數,以及執行個體查閱金鑰失敗的總次數。
    2. 將命中總數除以命中和未命中的總數
      (也就是命中數/(命中數 + 未命中數))。商數就是命中率。
    3. 如要調整執行個體,取得合適的命中率,請調整執行個體規模。您可以增加或減少分片數量,也可以升級或降級節點類型。詳情請參閱「關於調整執行個體容量」。

    提高命中率可改善系統的延遲時間和總處理量。找出符合成效、擴展和成本目標的平衡點。

  • 根據預設,我們建議您針對執行個體執行效能基準測試,判斷增加連線數是否能提升效能,而不會導致連線飽和。建議您先將用戶端設定為開啟與每個 Valkey 節點的連線。

  • 為用戶啟用管道化功能,讓用戶能處理更多要求,並加快處理速度。如要設定管道,請使用用戶端程式庫。詳情請參閱與這個程式庫相關聯的說明文件。

如何為執行個體最佳化高可用性?

建議您建立高可用性的多區域執行個體,而非單一區域執行個體,因為多區域執行個體可提供更優異的可靠性。

如果您建立高可用性例項,建議使用 /instance/node/replication/offset 指標。您可以使用這項指標,監控執行個體中單一節點的複寫偏移量 (以位元組為單位)。複製偏移是指 Memorystore for Valkey 尚未在主要節點和唯讀備用資源之間複製的位元組數。