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