Risoluzione dei problemi

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 monitori 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 per la tua istanza, ti consigliamo di impostare la soglia nel seguente modo:

  • Se il tipo di nodo è shared-core-nano, custom-pico, custom-micro, custom-mini, standard-small, highmem-medium, highcpu-medium o standard-large, imposta la soglia su un valore inferiore a 64 MB.

  • Se il tipo di nodo è highmem-xlarge o highmem-2xlarge, imposta la soglia su un valore inferiore a 1 GB.

Cosa fai se si verifica un ritardo della 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 il problema, ti consigliamo di scalare la capacità dell'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 fai se il buffer di output della tua istanza esaurisce lo spazio?

Se il buffer di output dell'istanza Memorystore for Valkey esaurisce lo spazio, procedi nel seguente modo:

  • Imposta un valore più piccolo per il parametro maxmemory.
  • Utilizza le norme allkeys-lru maxmemory.

Quando la memoria dell'istanza è piena e arriva una nuova scrittura, Memorystore for Valkey elimina le chiavi per fare spazio alla scrittura, in base alle norme maxmemory dell'istanza. Il criterio allkeys-lru espelle le chiavi utilizzate meno di recente (LRU) dall'intero set di chiavi.

Ti consigliamo di monitorare la maxmemory e la memoria utilizzata della tua istanza. Questo ti aiuta a sapere se la tua istanza raggiunge la capacità dell'istanza di cui è stato eseguito il provisioning. Inoltre, riducendo il valore del parametro maxmemory, avrai più spazio per l'overhead.

Perché le metriche esterne potrebbero non essere disponibili per la tua istanza?

Se l'istanza presenta 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 non funzionare correttamente e le metriche esterne potrebbero non essere disponibili.

Come fai a isolare l'origine della latenza della tua istanza?

Per determinare se la latenza che riscontri ha origine dall'istanza, dall'applicazione client o dall'ambiente di rete, utilizza lo strumento valkey-cli per eseguire un test di latenza continuo.

Per isolare l'origine della latenza dell'istanza:

  1. Connettiti a una VM Compute Engine che si trova nella stessa regione e nella stessa rete VPC dell'istanza.

  2. Se non è già installato, installa lo strumento valkey-cli sulla VM.

    • Per le VM basate su Debian o Ubuntu, esegui il seguente comando:

      sudo apt-get install valkey-tools
      
    • Per le VM basate su RHEL o CentOS, esegui questo comando:

      sudo yum install valkey-tools
      
  3. Per misurare la latenza dell'istanza in millisecondi, esegui questo comando:

    redis-cli --latency -h ENDPOINT_ADDRESS -p PORT
    

    Se la tua istanza utilizza la crittografia dei dati in transito, aggiungi il flag --tls e specifica le autorità di certificazione (CA) a cui connetterti.

    Effettua le seguenti sostituzioni:

    • ENDPOINT_ADDRESS: l'indirizzo IP dell'endpoint della tua istanza.
    • PORT: il numero di porta riservato all'endpoint dell'istanza. In genere, questo numero di porta è 6379.
  4. Lascia che il comando venga eseguito per alcuni minuti. Lo strumento esegue il ping continuo del server e calcola i valori di latenza minimo, massimo e medio.

  5. Per interrompere il comando e visualizzare i risultati, premi Ctrl+C.

Se il comando restituisce una latenza media costantemente bassa (in genere 1 millisecondo o meno), l'istanza è integra e risponde rapidamente.

Se il comando mostra una latenza costantemente bassa, ma l'applicazione client continua a riscontrare ritardi, i seguenti problemi potrebbero causare la latenza:

  • Rete: il traffico instradato in diverse regioni o zone tra il client e l'istanza potrebbe introdurre ritardi di rete significativi.
  • Client: un utilizzo elevato della CPU o della memoria sul client, pool di connessioni esauriti o colli di bottiglia della logica dell'applicazione potrebbero aumentare il tempo di round trip totale riscontrato dal client.

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 la tua istanza è sotto stress di memoria?

Per monitorare la memoria utilizzata per un'istanza Memorystore for Valkey, ti consigliamo di visualizzare la metrica /instance/memory/maximum_utilization. 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 illustra 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 avvisino se una metrica supera le soglie che hai impostato per la tua istanza. Per saperne di più sulla configurazione degli avvisi in Cloud Monitoring, consulta Impostare un avviso di monitoraggio per la memoria utilizzata.

Scenari di gestione delle connessioni

Questa sezione spiega i problemi di gestione della connessione che la tua istanza potrebbe riscontrare.

Se raggiungi il limite di connessioni o ricevi un timeout della connessione, cosa fai?

Quando raggiungi il limite di connessioni, il client non riesce a connettersi al server. Questo è noto come rifiuto della connessione.

Se ciò dovesse accadere, segui questi passaggi:

Scenari di timeout

Questa sezione spiega i problemi di timeout che la tua istanza potrebbe riscontrare.

Se ricevi un timeout I/O, cosa devi fare?

Quando un'operazione di lettura o scrittura in Memorystore for Valkey non viene completata entro un periodo di tempo specificato, si verifica un timeout I/O. Questo timeout potrebbe verificarsi per vari motivi. Ad esempio, uno o più nodi della tua istanza potrebbero essere sovraccarichi.

Se ricevi un timeout I/O, procedi nel seguente modo:

  • Utilizza la metrica instance/cpu/maximum_utilization per determinare l'utilizzo della CPU per un nodo nell'istanza, da 0,0 (0%) a 1,0 (100%). Consigliamo che tutti i nodi abbiano una percentuale di utilizzo della CPU inferiore all'80%. Per maggiori informazioni, consulta le best practice per l'utilizzo della CPU.
  • Quando il client si disconnette dal server perché il server ha raggiunto il timeout, riprova con il backoff esponenziale e con il jitter. In questo modo si evita che più client sovraccarichino il server contemporaneamente.

Scenari di errore di connettività

Questa sezione spiega i problemi di connettività che la tua istanza potrebbe riscontrare.

Errore di connessione causato dalle regole firewall

Se non consenti le porte corrette sul firewall, la tua istanza potrebbe riscontrare errori di connessione perché il firewall potrebbe bloccare le porte utilizzate da Memorystore for Valkey.

Per tutti gli endpoint Private Service Connect della tua istanza, devi consentire la porta TCP 6379, nonché le porte TCP da 11000 a 13047. Per saperne di più su questi 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 la policy dell'organizzazione utilizza la policy .restrictPrivateServiceConnectProducer, inserisci nella lista consentita il numero della 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 SERVICE_PRODUCERS nella lista consentita. Ad esempio:

name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
    rules:
      - values:
          allowedValues:
          - SERVICE_PRODUCERS

Errore di connessione causato da connessioni che non rispondono

Ti consigliamo vivamente di configurare l'applicazione client in modo che rilevi le connessioni non rispondenti a Memorystore for Valkey. Quando viene rilevata una connessione che non risponde, il client deve ripristinarla. Per creare un'applicazione resiliente, ti consigliamo le seguenti configurazioni client:

  • Configura i parametri TCP keep-alive: imposta i parametri TCP keepalive time, TCP keepalive interval e TCP keepalive probes in modo che i client rilevino e interrompano le connessioni che non rispondono in modo proattivo, anche quando le connessioni sono inattive. Ad esempio, se imposti il parametro TCP keepalive time su 30 secondi, TCP keepalive interval su 10 secondi e TCP keepalive probes su 3, i client reimpostano le connessioni inattive che non rispondono entro un minuto.
  • Configura i timeout utente TCP: imposta questo timeout nei client per reimpostare le connessioni con richieste in sospeso e interrompere la risposta. Ad esempio, se imposti il timeout su 15 secondi, i client reimpostano le connessioni che non rispondono e che hanno richieste in sospeso dopo 15 secondi.

Gestione degli 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 dalla tua applicazione vengono chiuse e viene visualizzato il messaggio di errore ERR role change occurred. Visualizzi questo messaggio di errore anche se la tua 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 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

Se si verifica questa situazione, il file Append-Only (AOF) cresce più velocemente di quanto possa gestire il processo di riscrittura. Ciò comporta l'esaurimento dello spazio su disco, causa errori di scrittura e blocca le operazioni che richiedono la creazione di repliche e la sincronizzazione completa.

Memorystore for Valkey ha implementato misure di protezione per regolare la velocità effettiva di scrittura. In questo modo, la riscrittura di AOF può tenere il passo con i carichi di lavoro di scrittura elevata sostenuti.