Best practice

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina illustra le best practice da seguire quando utilizzi Memorystore for Memcached.

Architetta l'applicazione per gestire i fallimenti della cache

Dovresti seguire le best practice standard per la progettazione della cache progettando la tua cache in modo da gestire i problemi di cache e l'indisponibilità del servizio. Consulta l'Accordo sul livello del servizio per informazioni sull'impegno di Memorystore for Memcached'di uptime.

Progetta la tua applicazione in modo che i fallimenti della cache e il tempo di inattività temporaneo del servizio non impediscano all'applicazione di recuperare i dati dal database sottostante supportato dall'istanza Memcached.

Inoltre, se riscontri una mancata disponibilità dello spazio per i tasti, attendi e riprova utilizzando il backoff esponenziale. Assicurati di impostare un limite di tempo dopo il quale cessa la strategia per i nuovi tentativi.

Connessione ai nodi Memcached

Quando esegui query su nodi Memcached con comandi come set, get e delete, devi connetterti direttamente agli indirizzi IP dei nodi. È possibile eseguire questi comandi sull'endpoint di individuazione automatica, ma questa operazione non è consigliata perché riduce le prestazioni dell'applicazione.

Ti consigliamo di utilizzare il servizio di individuazione automatica di Memorystore for Memcached. Questo servizio automatizza la gestione degli indirizzi IP del cluster quando aggiunge o rimuove nodi dal cluster. Per istruzioni sulla configurazione di rilevamento automatico per il tuo cluster, consulta l'articolo sull'utilizzo del servizio di individuazione automatica.

Configurazione corretta del parametro max-item-size

Questa sezione spiega come configurare al meglio il parametro max-item-size. Per i passaggi su come regolare questo parametro di configurazione, consulta la sezione Configurare le istanze di Memcached. Per l'elenco completo dei parametri di configurazione Memcached disponibili, consulta la sezione Configurazioni memorizzate nella cache.

Valori supportati e valori predefiniti

Per open source Memcached, il valore minimo per max-item-size è 1KiB, il valore massimo è 1 GiB e il valore predefinito è 1 MiB. Per Memorystore per Memcached, il valore minimo è 512 KiB, il valore massimo è 128 MiB e il valore predefinito è 1 MiB. Inoltre, qualsiasi valore su cui imposti questa configurazione deve essere uniforme divisi per 512 KiB.

Memorizzazione nella cache di una voce più grande del valore max-item-size configurato

Quando provi a memorizzare una voce di dimensioni superiori al valore max-item-size configurato, Memcached non riesce a restituire l'operazione e restituisce false. Se possibile, crea una logica nella tua applicazione per individuare questo errore dal client Memcached OSS in modo da poter eseguire il debug. Il tentativo di memorizzazione nella cache di una voce di dimensioni superiori a quelle di max-item-size configurato può causare un'elevata latenza per la tua istanza.

Impostazione del valore massimo di max-item-size

Puoi risolvere alcuni problemi relativi al parametro max-item-size impostandolo sul valore massimo; tuttavia, questa non è una buona prassi, quindi non devi utilizzare questa strategia in produzione. La gestione della memoria di Memcached si basa sui lab e l'archiviazione di elementi di dimensioni superiori a quelle del lab porta a un'allocazione inefficiente della memoria.

Evitare max-item-size problemi di configurazione

Innanzitutto, verifica le dimensioni massime degli elementi richieste per la cache. Imposta l'attributo max-item-size in modo che sia leggermente più grande della dimensione più grande dell'elemento, come margine di sicurezza.

Tieni presente che le dimensioni dei valori scritti nella cache possono cambiare nella tua applicazione nel tempo, Inoltre, il cluster può essere configurato in modo errato (ad esempio, durante la migrazione da un ambiente all'altro). Un'ulteriore misura che puoi adottare è convalidare le dimensioni massime degli elementi nella tua applicazione, in modo che la richiesta venga rifiutata se la tua applicazione tenta di memorizzare nella cache elementi più grandi dell'impostazione configurata.

Come bilanciare un cluster Memcached non bilanciato

In che modo si verificano i cluster non bilanciati e i rischi associati

In alcuni rari casi, quando crei un'istanza Memcached, i nodi possono essere distribuiti in modo non uniforme nelle zone di un'area geografica. Si verifica quando una zona non è disponibile nello stesso momento in cui esegui il provisioning del cluster.

Un cluster non bilanciato aumenta la potenziale perdita di dati perché i nodi non sono distribuiti in modo uniforme come potrebbero. Il cluster non si bilancia automaticamente automaticamente quando la zona inattiva torna online.

Come ribilanciare il cluster

Puoi ribilanciare il cluster aumentando temporaneamente il numero di nodi nel cluster, per poi fare lo scale down al numero originale dei nodi. Questa azione di scale up e scale down consente al sistema Memorystore for Memcached di ridistribuire i nodi in modo uniforme tra le zone disponibili.

Il successo di questo metodo per il ribilanciamento del cluster dipende dalla disponibilità delle zone in questione. Al momento Google Cloud non elenca le zone disponibili/non disponibili, quindi puoi sapere se la zona è online se i nodi sono bilanciati correttamente durante l'operazione di scalabilità.

Best practice di Cloud Monitoring

Per monitorare le prestazioni della cache nel tempo, devi utilizzare Cloud Monitoring per monitorare alcune metriche essenziali di Memorystore for Memcached:

  • Utilizzo memoria (memcache.googleapis.com/node/cache_memory)
  • Percentuale di utilizzo della CPU (memcache.googleapis.com/node/cpu/usage_time)

Il monitoraggio di queste due metriche nel tempo ti aiuta a determinare il grado di efficienza con cui il cluster viene utilizzato e se dovresti valutare se aumentare o diminuire le dimensioni del cluster.

Ad esempio, se le metriche indicano che l'utilizzo della memoria e della CPU è cresciuto nel tempo fino a oltre l'80%, è possibile che la tendenza continui. Di conseguenza, potresti aumentare anticipatamente le dimensioni dell'istanza in modo che la cache abbia spazio per archiviare nuovi valori all'aumentare dei requisiti delle risorse dell'applicazione.

Ti consigliamo di impostare un avviso per quando l'utilizzo della memoria e l'utilizzo della CPU raggiungono l'80%.

In alternativa, il monitoraggio di queste metriche nel tempo può indicare che non stai utilizzando tutto lo spazio e le risorse CPU di cui disponi attualmente. In questo caso, sarebbe più conveniente ridurre le dimensioni del cluster.

Passaggi successivi