Come posso evitare errori comuni Databases for Redis ?

Databases for Redis è un database in memoria. Differisce dai database persistenti tradizionali per il modo in cui accetta, elabora e memorizza i dati. Le seguenti informazioni evidenziano errori comuni che potrebbero verificarsi, alcuni motivi per tali errori e le soluzioni che è possibile applicare per correggere tali errori.

Errore: messaggio Connection to master lost

Databases for Redis funziona con due membri (master e replica) e tre sentinelle. I seguenti motivi potrebbero essere la causa del messaggio connection to master lost:

a. A causa della riduzione delle operazioni di input/output al secondo (IOPS), il master è occupato e non risponde ai sentinel, che restituiscono questo messaggio di errore nei log della piattaforma.

b. A causa della latenza della rete, le sentinelle non sono in grado di comunicare con il master.

c. Attività di manutenzione pianificate.

d. Aggiornamenti di versioni minori.

Soluzioni

Provare le seguenti soluzioni per risolvere l'errore:

a. Aumentare la dimensione del disco. 1 GB è uguale a 10 IOPS.

b. Passare al calcolo isolato per l'assegnazione di risorse dedicate.

c. Aumentare la dimensione della RAM.

d. La logica RETRY è obbligatoria, quindi assicurarsi che sia implementata.

e. La replica verrà promossa automaticamente a master dopo pochi secondi.

f. Implementa le politiche memory eviction o TTL nella tua istanza Redis.

IBM® Cloud Databases non esegue alcuna attività sul nodo master. Se necessario, tutte le attività vengono completate sul nodo di replica, che viene quindi promosso a master. I database sono impostati per attendere 30 secondi per trovare il nodo principale prima che si verifichi la promozione della replica.

Errore: AOF fsync asincrono sta impiegando troppo tempo (il disco è occupato?)

AOF è Accoda solo file. Questo è il log scritto sul disco persistente Redis quando l'impostazione persistente è attiva.

Redis utilizza i file AOF e RDB per scrivere il log e RDB per lo snapshot.

Alcuni dei motivi per cui potresti visualizzare questo errore sono i seguenti:

a. A causa di IOPS insufficienti, Redis non è in grado di scrivere sul disco.

b. Potrebbe esserci un backup Databases for Redis in esecuzione contemporaneamente all'esecuzione del tuo batch.

c. La tua applicazione potrebbe inserire chiamate API sconosciute all'istanza Redis.

Ad eccezione di PSYNC, che viene utilizzato per le metriche, non richiediamo nessun' altra API nella tua istanza.

Soluzioni:

Provare le seguenti soluzioni per risolvere l'errore:

a. Aumentare la dimensione del disco. Una raccomandazione di ballpark è del 30% in più rispetto al volume previsto.

b. Se Redis è alla capacità massima, suddividi una singola istanza Redis in più istanze e regola la tua architettura dell'applicazione.

c. Disattivare la persistenza se non è richiesta. Passare alla modalità cache.

La dimensione del disco non può essere ridotta, ma la memoria può esserlo. Poiché Redis è un archivio di dati in-memory, si consiglia di valutare le dimensioni dei dati in corso prima di ridimensionare la memoria dell'istanza, perché una riduzione significativa può causare errori.

Errore: il ridimensionamento di un'istanza è bloccato o sta impiegando più tempo del previsto

Con IBM Cloud, puoi ridimensionare o ridimensionare la tua istanza man mano che i tuoi dati crescono. Offriamo ridimensionamento automatico e ridimensionamento manuale dall'IU, dalla CLI e dalle API. Tuttavia, fai attenzione quando ridimensioni la tua istanza. Se il ridimensionamento sta impiegando più tempo del previsto, potrebbe essere per uno dei seguenti motivi:

a. L'istanza si trova già nell'istanza più grande (cores*rams) e non è disponibile alcun cluster più grande su cui spostare il carico di lavoro. In questo caso, viene formato un nuovo cluster e la tua istanza viene spostata, il che può richiedere alcuni minuti.

b. Hai ridotto drasticamente la sua memoria (ad esempio, da 16 GB di RAM a 10 GB di RAM). Tuttavia, la dimensione dell'archivio dati (disco) è superiore, ad esempio, 11 GB. In questi casi, non c'è spazio sufficiente nella RAM per leggere i dati dal disco e la formazione potrebbe bloccarsi.

Soluzioni:

Provare le seguenti soluzioni per risolvere l'errore:

a. Redis è a thread singolo per le operazioni principali. Si prevede di utilizzare meno core e più memoria. Ciò aumenta la probabilità di disponibilità di un cluster.

b. Aumenta la tua RAM e il tuo disco in base alle tue esigenze I/O.

c. Non ridurre drasticamente la RAM. Si consiglia di diminuire gradualmente.

Assicurarsi che la memoria della filigrana sia disponibile per consentire a Redis di eseguire i suoi processi intrinseci.

Errore: READONLY Non è possibile scrivere su una replica di sola lettura

Databases for Redis ha due nodi, master e replica. Gli utenti possono connettersi solo al nodo master e il nodo di replica viene utilizzato per assicurare l'elevata disponibilità, che è generalmente inaccessibile agli utenti. Tuttavia, come con qualsiasi connessione remota, può verificarsi una commutazione dove la replica viene promossa a master. È possibile riscontrare un blip momentaneo in servizio e nessun altro impatto è previsto se i nodi sono configurati correttamente.

a. A causa delle IOPS ridotte, il master è occupato e non risponde alle sentinelle, restituendo questo messaggio di errore nei log della piattaforma.

b. A causa della latenza della rete, le sentinelle non sono in grado di comunicare con il master.

c. Manutenzione pianificata.

d. Aggiornamenti di versioni minori.

Soluzioni:

Provare le seguenti soluzioni per risolvere l'errore:

a. Includere la logica di ripetizione e riconnessione nella progettazione dell'applicazione. È possibile utilizzare librerie come ioredis e noderedis. Per ulteriori dettagli, consultare Error detection and handling with Redis blog post.

b. Alcuni client hanno la logica di ripetizione e riconnessione integrata. È possibile utilizzare anche questi client.

c. La logica di ripetizione e riconnessione è fortemente consigliata per tutti i servizi cloud.