Questa pagina illustra le best practice da seguire quando utilizzi Memorystore for Memcached.
Progetta l'architettura dell'applicazione per gestire le mancate hit della cache
Devi seguire le best practice standard per la progettazione della cache, progettando la cache per gestire le mancate corrispondenze della cache e l'indisponibilità del servizio. Consulta l'Accordo sul livello del servizio per informazioni sull'impegno di Memorystore for Memcached in termini di tempo di attività.
Progetta l'applicazione in modo che le mancate corrispondenze della cache e i tempi di riposo temporanei del servizio non impedano all'applicazione di recuperare i dati dal database sottostante supportato dall'istanza Memcached.
Inoltre, se si verifica la mancata disponibilità dello spazio chiavi, attendi e riprova utilizzando il backoff esponenziale. Assicurati di impostare un limite di tempo dopo il quale la strategia di ripetizione viene interrotta.
Connessione ai nodi Memcached
Quando esegui query sui nodi Memcached con comandi come set
, get
e delete
, devi collegarti direttamente agli indirizzi IP dei nodi. È possibile eseguire questi comandi sull'endpoint di rilevamento automatico, ma non è consigliabile perché riduce il rendimento dell'applicazione.
Rilevamento automatico consigliato
Ti consigliamo di utilizzare il servizio di rilevamento automatico Memorystore for Memcached. Questo servizio automatizza la gestione degli indirizzi IP del cluster quando aggiungi o rimuovi nodi dal cluster. Per istruzioni su come configurare l'individuazione automatica per il tuo cluster, consulta Utilizzare il servizio di individuazione automatica.
Configurazione corretta del parametro max-item-size
Questa sezione spiega come configurare al meglio il parametro max-item-size
. Per la procedura di regolazione di questo parametro di configurazione, consulta Configurare le istanze 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 provi a memorizzare nella cache una voce più grande del valore max-item-size
configurato, Memcached non riesce a completare l'operazione e restituisce false. Se possibile, incorpora nella tua applicazione la logica 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 di quella configuratamax-item-size
può causare una latenza elevata per l'istanza.
Impostazione di max-item-size
sul valore massimo
Puoi risolvere alcuni problemi con il parametro max-item-size
impostandolo sul valore massimo. Tuttavia, questa non è una buona prassi, quindi non dovresti utilizzare questa strategia in produzione. La gestione della memoria di Memcached si basa su slab e la memorizzazione di elementi più grandi dello slab comporta un'allocazione della memoria inefficiente.
Evitare problemi di configurazione di max-item-size
Innanzitutto, scopri la dimensione massima dell'elemento richiesta per la cache. Imposta max-item-size
in modo che sia leggermente più grande delle dimensioni dell'articolo più grande, come margine di sicurezza.
Tieni presente che le dimensioni dei valori scritti nella cache possono cambiare nel tempo all'interno dell'applicazione. Inoltre, il cluster può essere configurato in modo errato (ad esempio, durante la migrazione da un ambiente all'altro). Un'altra misura che puoi adottare è convalidare le dimensioni massime degli elementi nella tua applicazione, in modo che la richiesta venga rifiutata se l'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. Questo si verifica quando una zona non è disponibile nello stesso momento in cui esegui 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 si riequilibra automaticamente quando la zona non disponibile torna online.
Come riequilibrare il cluster
Puoi riequilibrare il cluster aumentando temporaneamente il numero di nodi al suo interno, quindi riducendo il numero di nodi al numero originale. Questa azione di ridimensionamento consente al sistema Memorystore for Memcached di ridistribuire i nodi in modo uniforme tra le zone disponibili.
Il successo di questo metodo per il riequilibrio del cluster dipende dalla disponibilità delle zone in questione.Al momento, Google Cloud non elenca le zone disponibili/non disponibili, quindi puoi capire se la zona è online solo se i nodi sono bilanciati correttamente durante l'operazione di ridimensionamento.
Best practice per Cloud Monitoring
Per monitorare il rendimento della cache nel tempo, ti consigliamo di utilizzare Cloud Monitoring per monitorare alcune metriche essenziali di Memorystore per Memcached:
- Utilizzo memoria (
memcache.googleapis.com/node/cache_memory
) - Percentuale di utilizzo della CPU (
memcache.googleapis.com/node/cpu/utilization
)
Monitorare queste due metriche nel tempo ti aiuta a determinare l'efficienza con cui viene utilizzato il tuo cluster e se dovresti prendere in considerazione l'aumento o la diminuzione delle dimensioni del cluster.
Ad esempio, se le metriche indicano che l'utilizzo della memoria e della CPU è aumentato nel tempo fino a superare l'80%, è possibile che la tendenza continui. Di conseguenza, puoi aumentare in anticipo le dimensioni dell'istanza in modo che la cache abbia spazio per memorizzare nuovi valori man mano che i requisiti delle risorse dell'applicazione aumentano.
Ti consigliamo di impostare un avviso per quando l'utilizzo della memoria e della CPU raggiunge l'80%.
In alternativa, il monitoraggio di queste metriche nel tempo potrebbe indicare che non stai utilizzando tutte le risorse di spazio e CPU di cui disponi al momento. In questo caso, sarebbe più conveniente ridurre le dimensioni del cluster.
Passaggi successivi
- Scopri di più sul servizio di rilevamento automatico.
- Esamina i parametri di configurazione di Memcached modificabili.