最佳做法

本頁說明使用 Memorystore for Memcached 時的最佳做法。

設計應用程式架構,處理快取未命中情況

您應遵循標準的快取設計最佳做法,設計快取來處理快取未命中和服務無法使用的情況。如要瞭解 Memorystore for Memcached 的運作時間承諾,請參閱服務水準協議

設計應用程式時,請確保快取未命中和暫時服務停機不會導致應用程式無法從 Memcached 執行個體支援的基礎資料庫擷取資料。

此外,如果遇到鍵空間無法使用的情況,請稍後再以指數輪詢方式重試。 請務必設定時間限制,讓重試策略在時間到期後停止。

連線至 Memcached 節點

使用 setgetdelete 等指令查詢 Memcached 節點時,應直接連線至節點的 IP 位址。您可以在自動探索端點上執行這些指令,但我們不建議這麼做,因為這會導致應用程式效能降低。

建議您使用 Memorystore for Memcached 自動探索服務。當您在叢集中新增或移除節點時,這項服務會自動管理叢集 IP 位址。如要瞭解如何為叢集設定自動探索功能,請參閱「使用自動探索服務」。

正確設定 max-item-size 參數

本節說明如何妥善設定 max-item-size 參數。如需調整這項設定參數的步驟,請參閱「設定 Memcached 執行個體」。如需可用的 Memcached 設定參數完整清單,請參閱「Memcached 設定」。

支援的值和預設值

如果是開放原始碼 Memcached,max-item-size 的最小值為 1KiB,最大值為 1 GiB,預設值為 1 MiB。如果是 Memorystore for Memcached,最小值為 512 KiB,最大值為 128 MiB,預設值為 1 MiB。此外,您為這項設定設定的任何值都必須可被 512 KiB 整除。

快取大於設定 max-item-size 的項目

如果您嘗試快取大於設定 max-item-size 的項目,Memcached 會導致作業失敗並傳回 false。如果可以,請在應用程式中建構邏輯,從 Memcached OSS 用戶端顯示這項錯誤,以便進行偵錯。嘗試快取大於所設 max-item-size 的項目,可能會導致執行個體延遲時間過長。

max-item-size 設為最大值

您可以將 max-item-size 參數設為最大值,解決部分問題,但這並非最佳做法,因此不應在正式環境中使用這項策略。Memcached 記憶體管理是以 Slab 為基礎,如果儲存的項目大於 Slab,就會導致記憶體分配效率不彰。

避免 max-item-size 設定問題

首先,請找出快取所需的項目大小上限。將 max-item-size 設為略大於最大項目大小,做為安全邊際。

請注意,寫入快取的數值大小可能會隨時間在應用程式中變更。此外,叢集也可能設定錯誤 (例如從一個環境遷移至另一個環境時)。您還可以採取額外措施,在應用程式中驗證項目大小上限,這樣一來,如果應用程式嘗試快取大於設定的項目,系統就會拒絕要求。

如何平衡不平衡的 Memcached 叢集

叢集不平衡的原因和相關風險

在極少數情況下,建立 Memcached 執行個體時,節點可能會在區域的各個可用區中分布不均。如果佈建叢集時,某個可用區無法使用,就會發生這種情況。

叢集不平衡會增加資料遺失的可能性,因為節點的分布不夠平均。當故障的可用區恢復連線時,叢集不會自動重新平衡。

如何重新平衡叢集

如要重新平衡叢集,請暫時增加叢集中的節點數,然後將節點數調回原始數量。透過這種先增加再減少節點數的調度方式,Memorystore for Memcached 系統就能在可用區之間平均分配節點。

使用這個方法重新平衡叢集是否成功,取決於相關區域的可用性。 Google Cloud 目前不會列出可用/無法使用的區域,因此只有在節點於擴充作業期間正確平衡時,您才能判斷區域是否處於連線狀態。

Cloud Monitoring 最佳做法

如要追蹤快取效能的變化,請使用 Cloud Monitoring 監控一些重要的 Memorystore for Memcached 指標:

  • 記憶體用量 (memcache.googleapis.com/node/cache_memory)
  • CPU 使用率百分比 (memcache.googleapis.com/node/cpu/utilization)

長期追蹤這兩項指標,有助於判斷叢集的使用效率,以及是否應考慮增加或減少叢集大小。

舉例來說,如果指標顯示記憶體用量和 CPU 用量隨著時間增加,且已超過 80%,這種趨勢可能還會持續下去。因此,您可能會提早增加執行個體大小,讓快取有空間儲存新值,因應應用程式資源需求增加的情況。

建議您設定快訊,在記憶體用量和 CPU 使用率達到 80% 時收到通知。

或者,追蹤這些指標一段時間後,可能會發現您目前並未充分運用所有空間和 CPU 資源。在這種情況下,縮減叢集大小會更具成本效益。

後續步驟