Best practice

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

Progetta l'applicazione per gestire gli errori di cache

Devi seguire le best practice standard per la progettazione della cache progettando la cache in modo da gestire gli errori di cache e l'indisponibilità del servizio. Per informazioni sull'impegno di Memorystore for Memcached in termini di uptime, consulta l'accordo sul livello del servizio.

Progetta la tua applicazione in modo che gli errori della cache e i tempi di inattività temporanei del servizio non impediscano all'applicazione di recuperare i dati dal database sottostante supportato dall'istanza Memcached.

Inoltre, se riscontri l'indisponibilità dello spazio delle chiavi, attendi e riprova utilizzando il backoff esponenziale. Assicurati di impostare un limite di tempo dopo il quale la strategia di ripetizione cessa.

Connessione ai nodi Memcached

Quando esegui query sui nodi Memcached con comandi come set, get e delete, devi connetterti direttamente agli indirizzi IP dei nodi. È possibile eseguire questi comandi sull'endpoint di rilevamento automatico, ma non è consigliato perché causa una riduzione del rendimento dell'applicazione.

Ti consigliamo di utilizzare il servizio di rilevamento automatico di Memorystore for Memcached. Questo servizio automatizza la gestione degli indirizzi IP del cluster quando aggiungi o rimuovi nodi dal cluster. Per istruzioni sulla configurazione dell'individuazione automatica per il tuo cluster, consulta 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 per modificare questo parametro di configurazione, consulta Configurazione delle istanze di Memcached. Per l'elenco completo dei parametri di configurazione Memcached disponibili, consulta Configurazioni di Memcached.

Valori supportati e valori predefiniti

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

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

Quando tenti di memorizzare nella cache una voce più grande del valore max-item-size configurato, Memcached non riesce a eseguire l'operazione e restituisce false. Se possibile, incorpora la logica nell'applicazione per visualizzare questo errore dal client OSS Memcached in modo da poterlo eseguire il debug. Il tentativo di memorizzare nella cache una voce più grande del valore max-item-size configurato può causare una latenza elevata per l'istanza.

Impostazione di max-item-size sul valore massimo

Puoi risolvere alcuni problemi relativi al parametro max-item-size impostandolo sul valore massimo; tuttavia, questa non è una buona pratica, quindi non dovresti utilizzare questa strategia in produzione. La gestione della memoria di Memcached si basa su slab e l'archiviazione di elementi più grandi dello slab comporta un'allocazione inefficiente della memoria.

Evitare problemi di configurazione di max-item-size

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

Tieni presente che le dimensioni dei valori scritti nella cache potrebbero cambiare nella tua applicazione nel tempo. Inoltre, il cluster può essere configurato in modo errato (ad esempio, durante la migrazione da un ambiente a un altro). Una misura aggiuntiva 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 sbilanciato

Come si verificano i cluster sbilanciati e i rischi associati

In alcuni rari casi, quando crei un'istanza Memcached, i nodi possono essere distribuiti in modo non uniforme tra le zone di una regione. Ciò si verifica quando una zona non è disponibile nello stesso momento in cui viene eseguito il provisioning del cluster.

Un cluster sbilanciato aumenta il potenziale di perdita di dati perché i nodi non sono distribuiti in modo uniforme. Il cluster non viene ribilanciato automaticamente quando la zona non disponibile torna online.

Come ribilanciare il cluster

Puoi ribilanciare il cluster aumentando temporaneamente il numero di nodi nel cluster, quindi riducendo il numero di nodi al numero originale. Questa azione di scalabilità orizzontale e riduzione della scalabilità orizzontale consente al sistema Memorystore for Memcached di ridistribuire i nodi in modo uniforme tra le zone disponibili.

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

Best practice per Cloud Monitoring

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

  • Memoria utilizzata (memcache.googleapis.com/node/cache_memory)
  • Percentuale di utilizzo CPU (memcache.googleapis.com/node/cpu/utilization)

Il monitoraggio di queste due metriche nel tempo ti aiuta a determinare l'efficienza di utilizzo del tuo cluster e se devi prendere in considerazione l'aumento o la riduzione delle dimensioni del cluster.

Ad esempio, se le metriche indicano che la memoria utilizzata e l'utilizzo della CPU sono aumentati nel tempo fino a superare l'80%, è possibile che la tendenza continui. Di conseguenza, potresti aumentare le dimensioni dell'istanza in anticipo in modo che la cache abbia spazio per archiviare nuovi valori man mano che aumentano i requisiti di risorse dell'applicazione.

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

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

Passaggi successivi