Questa pagina fornisce indicazioni su come utilizzare in modo ottimale Memorystore for Redis. In questa pagina vengono inoltre indicati i potenziali problemi da evitare.
Per un elenco degli scenari di risoluzione dei problemi, consulta la sezione Risoluzione dei problemi.
Esportazione RDB
Quando esporti un backup RDB, segui queste indicazioni:
- Esporta in un periodo di bassa frequenza di scrittura.
- Se esegui l'esportazione durante un periodo di elevata frequenza di scrittura, abbassa temporaneamente la configurazione
maxmemory
fino al 50% della capacità dell'istanza per fornire un overhead sufficiente per un'operazione riuscita.
Operazioni ad alta intensità di risorse
Per le istanze Redis del livello Standard, le seguenti operazioni utilizzano memoria extra per la durata dell'operazione:
L'upgrade della versione, la scalabilità e il failover manuale utilizzano memoria extra (per le istanze di livello Standard) a causa della replica. Queste operazioni seguono il processo di replica descritto in Comportamento di upgrade delle istanze del livello Standard.
Le operazioni di importazione ed esportazione richiedono memoria aggiuntiva a causa del processo Redis che ha eseguito il fork e della gestione dei dati copia in scrittura associata a queste operazioni.
Per mitigare gli svantaggi delle operazioni che consumano molte risorse, dovresti:
- Riduci la configurazione maxmemory all'80% della capacità dell'istanza per la durata dell'operazione. Ciò fornisce un overhead sufficiente per il successo dell'operazione.
- Monitora la metrica del rapporto di utilizzo della memoria di sistema e assicurati che sia inferiore all'80% prima di eseguire una di queste operazioni.
- Esegui queste operazioni durante i periodi in cui il traffico delle istanze è ridotto (ad esempio durante la notte o nel fine settimana e così via).
- Attiva una logica di ripetizione dei tentativi con backoff esponenziale prima di eseguire queste operazioni.
Operazioni e scenari che richiedono un nuovo tentativo di connessione
Le operazioni e gli scenari seguenti interrompono la connessione di rete tra la tua rete e l'istanza Redis:
- Upgrade della versione
- Scale up/down
- Importazione
- Failover manuale
- Manutenzione del sistema
- Rotazione dell'autorità di certificazione per le istanze Redis in cui è abilitata la crittografia dei dati in transito
- Failover di emergenza
Queste operazioni modificano l'istanza, richiedendo un'interruzione temporanea della connessione. Devi avere una logica di nuovo tentativo con backoff esponenziale prima di eseguire queste operazioni, in modo che l'applicazione si riconnetti automaticamente e continui a funzionare normalmente.
Manutenzione di routine
Le istanze Memorystore for Redis sono sottoposte a manutenzione periodica. Per maggiori dettagli, consulta i criteri di manutenzione di Memorystore for Redis.
Implementa le seguenti best practice in modo da prepararti per la manutenzione di routine:
- Imposta un periodo di manutenzione per il periodo in cui possono essere eseguiti gli aggiornamenti di manutenzione.
- Pianifica periodi di manutenzione per i periodi di traffico ridotto delle istanze e overhead di memoria sufficiente. Per ulteriori informazioni, consulta la sezione Impatto degli aggiornamenti di manutenzione.
- Attiva le notifiche per i periodi di manutenzione per avvisarti della manutenzione imminente.
- Attiva una logica di ripetizione con backoff esponenziale.
- Per le istanze del livello Standard puoi simulare un evento di manutenzione utilizzando il failover manuale per vedere in che modo il failover causato dalla manutenzione influisce sulla tua applicazione.
- Per le istanze del livello base puoi simulare l'impatto di un aggiornamento di manutenzione scalando temporaneamente l'istanza a una dimensione maggiore. Dopo aver osservato l'impatto, puoi ridimensionarlo alle dimensioni originali.
Gestione della memoria
La gestione della memoria può essere una sfida a causa della ben nota frammentazione della memoria che si verifica con Redis open source. Ti consigliamo di ridurre la configurazione di maxmemory
per l'istanza per ridurre il sovraccarico in caso di pressione della memoria elevata.
Il modo migliore per monitorare la pressione della memoria nell'istanza Memorystore è utilizzare la metrica Rapporto di utilizzo della memoria di sistema. Per una guida dettagliata su come gestire la memoria per Memorystore for Redis, consulta Best practice per la gestione della memoria.
Gestione delle connessioni inattive
Nel tempo, se le connessioni non vengono terminate correttamente, il numero di connessioni all'istanza Memorystore potrebbe aumentare. Ciò può avere implicazioni negative sulle prestazioni, soprattutto se utilizzi la crittografia dei dati in transito, che impone limiti massimi di connessioni in base al livello di capacità. Per mitigare il problema, consigliamo di utilizzare il
timeout
parametro di configurazione Redis
che consente di impostare il numero di secondi prima che le connessioni client inattive vengano terminate automaticamente.
Connettore di accesso VPC serverless richiesto per alcuni ambienti serverless
Alcuni ambienti serverless richiedono un connettore di accesso VPC serverless per connettersi a Memorystore per Redis. Configura il connettore di accesso VPC serverless per il progetto se vuoi connetterti utilizzando uno di questi ambienti.
Networking
Ti consigliamo di utilizzare la modalità di connessione di accesso privato ai servizi. Memorystore for Redis utilizza due modalità di connessione: accesso privato ai servizi e peering diretto. La modalità di connessione di accesso privato ai servizi semplifica la gestione dell'intervallo IP e ti consente di utilizzare il VPC condiviso, se vuoi.
Una volta creata un'istanza, la modalità di connessione non può essere modificata.
Per maggiori dettagli, vedi Networking.
Monitoraggio e avvisi
Ti consigliamo di utilizzare il monitoring e gli avvisi perché forniscono indicatori chiave sull'utilizzo della memoria della tua istanza Redis. Forniscono inoltre insight sull'efficienza con cui la tua istanza Redis risponde alle richieste di cache in arrivo.
Dovresti configurare i seguenti avvisi predefiniti:
- Impostazione di un avviso di Cloud Monitoring per l'utilizzo della memoria
- Impostazione di un avviso di Cloud Monitoring per il rapporto di utilizzo della memoria di sistema
Best practice per l'utilizzo della CPU
L'uso improprio di costosi comandi Redis comporta problemi di latenza elevata, mancata reattività o connettività. Le istanze di livello Standard offrono disponibilità elevata durante il ripristino di emergenza e si basano sulla replica asincrona tra nodi principali e di replica. Se uno dei nodi ha una costosa elaborazione dei comandi che blocca il thread principale di Redis, la replica potrebbe risentirne. Se il problema persiste e si verifica un'interruzione della posizione, i dati più recenti scritti nella località dell'interruzione potrebbero non essere disponibili nell'altra località.
Ti consigliamo di utilizzare Cloud Monitoring
per impostare avvisi per la metrica Secondi CPU del thread principale
(redis.googleapis.com/stats/cpu_utilization_main_thread
) in modo che l'utilizzo della CPU non superi 0,9 secondi per il nodo principale e 0,5 secondi
per ogni nodo di replica.
Se l'istanza Redis supera i valori consigliati, ti consigliamo di scalarla a un livello di capacità superiore o di seguire le istruzioni per la risoluzione dei problemi per evitare operazioni che richiedono un uso intensivo della CPU.