Questa pagina spiega vari scenari di errore e fornisce indicazioni per la risoluzione degli errori.
Scenari di replica
Questa sezione spiega i problemi di replica che potrebbero verificarsi con la tua istanza.
Come si monitorano i ritardi di replica?
Memorystore for Valkey ha la metrica /instance/replication/maximum_offset_diff. Questa metrica monitora la differenza massima di offset di replica (in byte) per un nodo in un'istanza principale.
Mantenendo bassa la differenza di offset di replica, le repliche possono eseguire operazioni di sincronizzazione incrementale più frequentemente e a un costo inferiore rispetto alle operazioni di sincronizzazione completa.
Ti consigliamo di impostare una soglia per la metrica maximum_offset_diff. Se la soglia viene superata, Memorystore for Valkey può inviarti una notifica tramite un avviso.
In base al tipo di nodo della tua istanza, ti consigliamo di impostare la soglia come segue:
Se il tipo di nodo è
shared-core-nano,custom-pico,custom-micro,custom-mini,standard-small,highmem-medium,highcpu-mediumostandard-large, imposta la soglia su un valore inferiore a 64 MB.Se il tipo di nodo è
highmem-xlargeohighmem-2xlarge, imposta la soglia su un valore inferiore a 1 GB.
Cosa fare in caso di ritardo di replica tra l'istanza principale e le relative repliche?
Potrebbe verificarsi un ritardo di replica significativo se l'istanza principale ha troppe operazioni di scrittura e le repliche non riescono a recuperare per replicare queste operazioni. Per risolvere questo problema, ti consigliamo di scalare la capacità di l'istanza aumentando il numero di shard per l'istanza.
Scenari di utilizzo della CPU
Questa sezione spiega i problemi di utilizzo della CPU che la tua istanza potrebbe riscontrare.
Cosa fare se il buffer di output dell'istanza esaurisce lo spazio?
Se il buffer di output dell'istanza Memorystore for Valkey esaurisce lo spazio, procedi nel seguente modo:
- Imposta un valore inferiore per il
maxmemoryparametro. - Utilizza il criterio
allkeys-lrumaxmemory.
Quando la memoria dell'istanza è piena e arriva una nuova scrittura, Memorystore for Valkey elimina le chiavi per fare spazio alla scrittura, in base al criterio maxmemory dell'istanza. Il criterio allkeys-lru elimina le chiavi utilizzate meno di recente (LRU) dall'intero keyset.
Ti consigliamo di monitorare maxmemory e la memoria utilizzata dell'istanza. In questo modo, puoi sapere se l'istanza raggiunge la capacità di istanza di cui è stato eseguito il provisioning.
Inoltre, riducendo il valore del parametro maxmemory, ottieni più spazio per l'overhead.
Perché le metriche esterne potrebbero mancare per la tua istanza?
Se l'istanza registra un utilizzo elevato della CPU o le risorse dell'istanza si esauriscono (ad esempio, a causa di un numero eccessivo di connessioni), l'istanza potrebbe comportarsi in modo anomalo e le metriche esterne potrebbero mancare.
Scenari di gestione della memoria
Questa sezione spiega i problemi di gestione della memoria che la tua istanza potrebbe riscontrare.
Quale metrica puoi utilizzare per determinare se l'istanza è sotto stress di memoria?
Per monitorare la memoria utilizzata
per un'istanza Memorystore for Valkey, ti consigliamo di visualizzare la
/instance/memory/maximum_utilization metrica. Se la memoria utilizzata
dell'istanza si avvicina all'80% e prevedi che l'utilizzo dei dati aumenterà, allora
fai lo scale up delle dimensioni dell'istanza
per migliorare il rendimento e fare spazio a nuovi dati.
Scenari di monitoraggio
Questa sezione spiega i problemi di monitoraggio che la tua istanza potrebbe riscontrare.
Come si configurano gli avvisi per Memorystore for Valkey?
Puoi utilizzare Cloud Monitoring per impostare avvisi che ti informino se le metriche superano le soglie che hai impostato per la tua istanza. Per saperne di più su come impostare gli avvisi in Cloud Monitoring, consulta Impostare un avviso di Monitoring per la memoria utilizzata.
Scenari di gestione delle connessioni
Questa sezione spiega i problemi di gestione delle connessioni che la tua istanza potrebbe riscontrare.
Cosa fare se raggiungi il limite di connessioni o ricevi un timeout di connessione?
Quando raggiungi il limite di connessioni, il client non riesce a connettersi al server. Questa situazione è nota come rifiuto della connessione.
In questo caso, procedi nel seguente modo:
- Utilizza la metrica
/instance/node/stats/rejected_connections_countper determinare il numero di connessioni rifiutate da Memorystore for Valkey perché il nodo dell'istanza raggiunge il limite massimo di client. - Utilizza la metrica
/instance/node/clients/connected_clientsper determinare il numero di client connessi al nodo dell'istanza. In questo modo, puoi verificare se tutti i nodi dell'istanza rientrano nel limite. - Arresta le connessioni indesiderate o con perdite utilizzando il
client killcomando. - Riduci il numero di connessioni o le dimensioni del pool nell'applicazione client. Per saperne di più, consulta la documentazione associata all'applicazione client.
- Modifica il limite massimo di client. Per saperne di più, consulta Configurare un'istanza.
- Esegui lo scale up dell'istanza a un tipo di nodo più grande in modo che l'istanza abbia un limite di connessioni più elevato.
Scenari di timeout
Questa sezione spiega i problemi di timeout che la tua istanza potrebbe riscontrare.
Cosa fare se ricevi un timeout di I/O?
Quando un'operazione di lettura o scrittura in Memorystore for Valkey non viene completata entro un periodo di tempo specificato, si verifica un timeout di I/O. Questo timeout potrebbe verificarsi per vari motivi. Ad esempio, uno o più nodi dell'istanza potrebbero essere sovraccarichi.
Se ricevi un timeout di I/O, procedi nel seguente modo:
- Utilizza la metrica
instance/cpu/maximum_utilizationper determinare l'utilizzo della CPU per un nodo nell'istanza, da 0,0 (0%) a 1,0 (100%). Ti consigliamo di impostare una percentuale di utilizzo della CPU inferiore all'80% per tutti i nodi. Per saperne di più, consulta le best practice per l'utilizzo della CPU. - Quando il client si disconnette dal server perché il server va in timeout, riprova con il backoff esponenziale e con Jitter. In questo modo, più client non sovraccaricano il server contemporaneamente.
Scenari di errori di connettività
Questa sezione spiega i problemi di connettività che la tua istanza potrebbe riscontrare.
Errore di connessione causato dalle regole firewall
Le regole firewall possono causare errori di connessione bloccando le porte utilizzate da Memorystore for Valkey. Devi inserire tutti i porti nella lista consentita per entrambi gli endpoint Private Service Connect della tua istanza. Per saperne di più sugli endpoint, consulta Indirizzi di rete riservati.
Errore di connessione causato dai criteri dell'organizzazione
Puoi avere un criterio dell'organizzazione che blocca le connessioni Private Service Connect alla tua istanza Memorystore for Valkey.
Se il criterio dell'organizzazione utilizza il criterio .restrictPrivateServiceConnectProducer, inserisci nella lista consentita il numero di cartella 672235397475, che è una cartella specifica per Memorystore for Valkey. Ad esempio:
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
rules:
- values:
allowedValues:
- under:folders/672235397475
Se il criterio dell'organizzazione utilizza il criterio .disablePrivateServiceConnectCreationForConsumers, inserisci nella lista consentita SERVICE_PRODUCERS. Ad esempio:
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
rules:
- values:
allowedValues:
- SERVICE_PRODUCERS
Gestire gli errori per le istanze con modalità cluster disabilitata
Se l'applicazione si connette all'endpoint di lettura di un'istanza che non ha repliche di lettura, la connessione si chiude e viene visualizzato il messaggio di errore
ERR no replicas found. In questo caso, prova a connettere l'applicazione all'endpoint principale o aggiungi repliche di lettura all'istanza.In caso di failover, le connessioni esistenti dall'applicazione si chiudono e viene visualizzato il messaggio di errore
ERR role change occurred. Questo messaggio di errore viene visualizzato anche se l'applicazione si connette all'endpoint di lettura di un'istanza e tutte le repliche di lettura dell'istanza non funzionano. In questo caso, l' applicazione deve riprovare la connessione con il backoff esponenziale.
Scenari di persistenza
Questa sezione spiega i problemi di persistenza che potrebbero verificarsi con la tua istanza.
Il traffico di scrittura supera la capacità di Memorystore for Valkey di compattare e recuperare spazio tramite la riscrittura AOF
In questa situazione, il file AOF (Append-Only File) cresce più velocemente di quanto il processo di riscrittura possa gestire. Ciò comporta l'esaurimento del disco, causa errori di scrittura e blocca le operazioni che richiedono la creazione di repliche e la sincronizzazione completa.
Memorystore for Valkey ha implementato dei guardrail per regolare la velocità effettiva di scrittura. In questo modo, la riscrittura AOF può tenere il passo con i carichi di lavoro di scrittura elevati e sostenuti.