最佳做法

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

架構應用程式以處理快取遺漏

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

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

此外,如果您遇到鍵空間無法使用的問題,請等待並使用指數輪詢重試。請務必設定時間限制,以便在時間到期後停止重試策略。

連線至 Memcached 節點

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

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

正確設定 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 記憶體管理功能是以區塊為基礎,如果儲存的項目大於區塊,就會導致記憶體配置效率不佳。

避免 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 資源。在這種情況下,縮小叢集大小會更省錢。

後續步驟