本頁說明使用 Memorystore for Memcached 時的最佳做法。
設計應用程式架構,處理快取未命中情況
您應遵循標準的快取設計最佳做法,設計快取來處理快取未命中和服務無法使用的情況。如要瞭解 Memorystore for Memcached 的運作時間承諾,請參閱服務水準協議。
設計應用程式時,請確保快取未命中和暫時服務停機不會導致應用程式無法從 Memcached 執行個體支援的基礎資料庫擷取資料。
此外,如果遇到鍵空間無法使用的情況,請稍後再以指數輪詢方式重試。 請務必設定時間限制,讓重試策略在時間到期後停止。
連線至 Memcached 節點
使用 set、get 和 delete 等指令查詢 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 資源。在這種情況下,縮減叢集大小會更具成本效益。
後續步驟
- 進一步瞭解 Auto Discovery 服務。
- 查看可修改的 Memcached 設定參數。