MISCONF Redis è configurato per salvare le istantanee RDB


366

Durante le scritture su Redis ( SET foo bar) ricevo il seguente errore:

MISCONF Redis è configurato per salvare le istantanee RDB, ma al momento non è in grado di persistere sul disco. I comandi che possono modificare il set di dati sono disabilitati. Controllare i log di Redis per i dettagli sull'errore.

Fondamentalmente capisco che il problema è che redis non è in grado di salvare i dati sul disco, ma non ho idea di come sbarazzarsi del problema.

Anche la seguente domanda ha lo stesso problema, è stata abbandonata molto tempo fa senza risposte e molto probabilmente senza tentativi di risolvere il problema.


sei riuscito a risolvere questo problema. Se sì, potresti aiutarmi con i passaggi. Perché posizionando il file rdb da qualche altra parte non lo risolverei, immagino. Penso im manca qualcosa qui
ankur

4
Questo errore si verifica a causa dell'avvio del server redis in una directory in cui redis non dispone delle autorizzazioni. Consiglio di ripristinare le impostazioni predefinite dopo aver risolto il problema: vedere la risposta relativa a una correzione a questo problema.
Govind Rai,


@GovindRai Ho già concesso l'autorizzazione redis cambiando gruppo e proprietario in redis, ma non aiuta!
wdetac,

Risposte:


184

Nel caso in cui si verifichi l'errore e alcuni dati importanti non possano essere scartati sull'istanza redis in esecuzione (problemi con le autorizzazioni per il rdbfile o la sua directory in modo errato o lo spazio su disco insufficiente), è sempre possibile reindirizzare il rdbfile da scrivere altrove.

Usando redis-cli, puoi fare qualcosa del genere:

CONFIG SET dir /tmp/some/directory/other/than/var
CONFIG SET dbfilename temp.rdb

Successivamente, potresti voler eseguire un BGSAVEcomando per assicurarti che i dati vengano scritti nel rdbfile. Assicurarsi che quando si esegue INFO persistence, bgsave_in_progressè già 0ed rdb_last_bgsave_statusè ok. Successivamente, ora puoi iniziare a eseguire il backup del rdbfile generato in un luogo sicuro.


7
rdb_bgsave_in_progress: 0 sotto Persistenza
thanikkal

Per qualche motivo quando provo qualsiasi comando di configurazione, mi piace continuare a caricare per sempre.
Bashar Abdullah,

5
Per quelli sfortunati che si trovano su Windows, me in questo momento, e whoa utilizzano la versione MSOpenTech, è necessario percorso di directory impostato nel seguente stile: dir C:/Temp/. Fai un bgsave per verificare che funzioni ..
John P,

@John P, era proprio quello che bisognava fare. Grazie!
Sam,

2
127.0.0.1:6379> CONFIG SET dir / root / tool (errore) ERR Modifica directory: Autorizzazione negata
Gank

317

Utilizzando redis-cli, puoi fermarlo provando a salvare l'istantanea:

config set stop-writes-on-bgsave-error no

Questa è una soluzione rapida, ma se ti preoccupi dei dati per cui li stai usando, dovresti verificare per prima cosa perché bgsave non è riuscito.


21
questa è una soluzione rapida ma dovresti verificare per prima cosa perché bgsave non è riuscito
Mandeep Singh,

7
Se usi redis principalmente per la memorizzazione nella cache e le sessioni, questo è un must.
Jim,

1
Non è pericoloso? Ad esempio, NodeBB utilizza Redis come archivio dati.
codecowboy,

2
@LoveToCode config set stop-writes-on-bgsave-error yes
Phil

4
Ogni volta che riavvio il server ho riscontrato di nuovo lo stesso problema. Quindi devo impostarlo di nuovo. Come posso renderlo permanente?
Zia Qamar,

63

Potrebbero esserci errori durante il processo bgsave a causa della memoria insufficiente. Prova questo (dalle domande frequenti sul salvataggio in background di redis)

echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
sysctl vm.overcommit_memory=1

5
LInk: redis.io/topics/faq Cerca questo: "Il salvataggio in background non riesce con un errore fork () sotto Linux anche se ho molta RAM libera! "
Bruno Peres,

49

Questo errore si verifica a causa del fallimento di BGSAVE. Durante BGSAVE, Redis esegue un processo figlio per salvare i dati sul disco. Anche se la ragione esatta del fallimento di BGSAVE può essere verificata dai log (di solito /var/log/redis/redis-server.logsu macchine linux), ma molte volte BGAVE non riesce perché il fork non può allocare memoria. Molte volte il fork non riesce ad allocare memoria (sebbene la macchina abbia abbastanza RAM disponibile) a causa di un'ottimizzazione contrastante da parte del sistema operativo.

Come si può leggere dalle FAQ di Redis :

Lo schema di salvataggio in background di Redis si basa sulla semantica della fork di copia su scrittura nei moderni sistemi operativi: forcelle Redis (crea un processo figlio) che è una copia esatta del genitore. Il processo figlio esegue il dump del DB su disco e alla fine si chiude. In teoria il bambino dovrebbe usare tutta la memoria di cui il genitore è una copia, ma in realtà grazie al semantico copia-scrittura implementato dalla maggior parte dei sistemi operativi moderni il processo genitore e figlio condivideranno le pagine di memoria comuni. Una pagina verrà duplicata solo quando cambia nel figlio o nel genitore. Poiché in teoria tutte le pagine possono cambiare mentre il processo figlio sta salvando, Linux non può dire in anticipo quanta memoria occuperà il bambino, quindi se l'impostazione overcommit_memory è impostata su zero fork fallirà a meno che non ci sia tanta RAM libera quanto richiesto per duplicare davvero tutte le pagine di memoria principale,

Impostando overcommit_memory su 1, Linux si rilassa ed esegue il fork in modo più ottimistico, e questo è davvero ciò che desideri per Redis.

Redis non ha bisogno di tanta memoria come pensa il sistema operativo per scrivere su disco, quindi potrebbe fallire preventivamente il fork.

Per risolvere il problema, puoi:

Modifica /etc/sysctl.confe aggiungi:

vm.overcommit_memory=1

Quindi riavviare sysctl con:

Su FreeBSD:

sudo /etc/rc.d/sysctl reload

Su Linux:

sudo sysctl -p /etc/sysctl.conf

L'output di ha systemctl status redisrivelato che esiste un avviso che suggerisce di modificare esattamente l' overcommit_memory=0impostazione. La modifica ha risolto il problema per me.
Algoritmo astratto

Ciò ha risolto correttamente il problema e dovrebbe essere la risposta accettata
DSynergy,

Quindi il tldr sarebbe, con le impostazioni predefinite, se redis utilizza 10 gb di RAM, è necessario disporre di 10 GB di RAM libera per questo processo figlio per poter eseguire?
Dan Hastings,

@DanHastings - Sì. E impostare overcommit_memory su 1 rilassa questo requisito.
Bhindi,

26

Riavvia il tuo server redis.

  • MacOs (birra) : brew services restart redis.
  • Linux: sudo service redis restart /sudo systemctl restart redis
  • Windows: Windows + R-> Tipo services.msc, Enter-> Cerca Redisquindi fare clic su restart.

Personalmente ho avuto questo problema dopo aver aggiornato redis con Brew ( brew upgrade). Dopo aver riavviato il laptop, ha funzionato immediatamente.


Se qualcuno sta leggendo questo ho avuto il problema con Homebrew pure ma niente a che fare con l'aggiornamento: ho solo bisogno di avviare il servizio con sudo: brew services stop redis; sudo brew services start redis.
bfontaine

24

nel caso in cui si stia lavorando su una macchina linux, ricontrollare anche le autorizzazioni per file e cartelle del database.

Il db e il percorso ad esso possono essere ottenuti tramite:

in redis-cli:

CONFIG OTTIENI dir

CONFIG OTTIENI dbfilename

e nella riga di comando ls -l. Le autorizzazioni per la directory dovrebbero essere 755 e quelle per il file dovrebbero essere 644 . Inoltre, normalmente redis-server viene eseguito come utente redis, quindi è anche bello dare all'utente redisla proprietà della cartella eseguendola sudo chown -R redis:redis /path/to/rdb/folder. Questo è stato elaborato nella risposta qui .


Quali autorizzazioni dovrebbero essere?
stephen,

Questo ha funzionato per me. Grazie!
Lordwhizy,

19

Grazie a tutti per aver verificato il problema, apparentemente l'errore è stato prodotto durante bgsave.

Per me, digitare config set stop-writes-on-bgsave-error nouna shell e riavviare Redis ha risolto il problema.


82
Ciò non ha "risolto il problema", lo ha semplicemente ignorato.
Buffalo,

Il riavvio di RedisServer in Services.msc ha funzionato per me.
ViPuL5,

Ogni volta che riavvio il server ho riscontrato di nuovo lo stesso problema. Quindi devo impostarlo di nuovo. Come posso renderlo permanente?
Zia Qamar,

@ZiaQamar, puoi impostare la proprietà in modo permanente in redis.conf, che molto probabilmente si trova in /etc/redis/redis.conf, impostare "stop-write-on-bgsave-error no"
Gaurav Tyagi,

L'IMO non è sicuramente la soluzione. Stai solo dicendo a Redis di non registrare quegli errori. Ma gli errori sono ancora lì ...
Erowlin

17

Avviare Redis Server in una directory in cui Redis dispone delle autorizzazioni di scrittura

Le risposte sopra risolveranno sicuramente il tuo problema, ma ecco cosa sta realmente succedendo:

Il percorso predefinito per l'archiviazione del rdb.dumpfile è ./(che indica la directory corrente). Puoi verificarlo nel tuo redis.conffile. Pertanto, la directory da cui si avvia il server redis è la posizione in cui dump.rdbverrà creato e aggiornato un file.

Sembra che tu abbia iniziato a eseguire il server redis in una directory in cui redis non ha i permessi corretti per creare il dump.rdbfile.

A peggiorare le cose, probabilmente redis non ti consentirà nemmeno di spegnere il server fino a quando non sarà in grado di creare il file rdb per garantire il corretto salvataggio dei dati.

Per risolvere questo problema, è necessario accedere all'ambiente client redis attivo utilizzando redis-clie aggiornare la dirchiave e impostarne il valore sulla cartella del progetto o su qualsiasi cartella in cui non sono disponibili autorizzazioni per il salvataggio. Quindi eseguire BGSAVEper richiamare la creazione del dump.rdbfile.

CONFIG SET dir "/hardcoded/path/to/your/project/folder"
BGSAVE

(Ora, se è necessario salvare il file dump.rdb nella directory in cui è stato avviato il server, sarà necessario modificare le autorizzazioni per la directory in modo che Redis possa scrivere su di essa. È possibile cercare stackoverflow come farlo ).

Ora dovresti essere in grado di chiudere il server Redis. Nota che abbiamo codificato il percorso. L'hardcoding è raramente una buona pratica e consiglio vivamente di avviare il server redis dalla directory del progetto e di modificare dir key back to. / `.

CONFIG SET dir "./"
BGSAVE

In questo modo quando è necessario redis per un altro progetto, il file di dump verrà creato nella directory del progetto corrente e non nella directory del progetto del percorso hardcoded.


Assicurati di concedere l'autorizzazione dell'utente non root per la directory in cui verrà archiviato il file di dump. Nel mio caso, ho un utente, redisquindi faccio:sudo chown redis:redis /var/lib/redis
RoundOutTooSoon

13

Se stai utilizzando MacOS e hai recentemente aggiornato a Catalina, potresti dover eseguire brew services restart rediscome suggerito in questo problema .


12

Aveva riscontrato questo errore ed è stato in grado di capire dal registro che l'errore è dovuto allo spazio su disco non sufficiente. Tutti i dati inseriti nel mio caso non erano più necessari. Quindi ho provato a FLUSHALL. Poiché il processo redis-rdb-bgsave era in esecuzione, non consentiva anche di FLUSH i dati. Ho seguito i passaggi seguenti e sono stato in grado di continuare.

  1. Accedi al client redis
  2. Eseguire il set di configurazione stop-write-on-bgsave-error no
  3. Esegui FLUSHALL (i dati memorizzati non erano necessari)
  4. Eseguire config set stop-write-on-bgsave-error sì

Il processo redis-rdb-bgsave non era più in esecuzione dopo i passaggi precedenti.


7

Ho affrontato il problema simile, il motivo principale dietro questo era il consumo di memoria (RAM) da parte di Redis. La mia macchina EC2 aveva 8 GB di RAM (arounf 7.4 disponibile per il consumo)

Quando il mio programma era in esecuzione, l'utilizzo della RAM è salito a 7,2 GB lasciando quasi ~ 100 MB in RAM, in genere ciò provoca MISCONF Redis error ...

È possibile determinare il consumo di RAM usando il htopcomando Cerca l' attributo Mem dopo aver eseguito il comando htop. Se mostra un consumo elevato (come nel mio caso era 7,2 GB / 7,4 GB) È meglio aggiornare l'istanza con una memoria più grande. In questo scenario l'utilizzo config set stop-writes-on-bgsave-error nosarà un disastro per il server e potrebbe comportare l'interruzione di altri servizi in esecuzione sul server (se presenti). Quindi, è meglio evitare il comando di configurazione e AGGIORNARE LA MACCHINA REDIS .

Cordiali saluti: Potrebbe essere necessario installare htop per farlo funzionare:sudo apt-get install htop

Un'altra soluzione a questo può essere un altro servizio pesante RAM in esecuzione sul sistema, verificare la presenza di altri servizi in esecuzione sul server / macchina / istanza e arrestarlo se non è necessario. Per controllare tutti i servizi in esecuzione sulla macchina, utilizzareservice --status-all

E un suggerimento per le persone che incollano direttamente il comando config, per favore fai un po 'di ricerca e almeno avvisa l'utente prima di usare tali comandi. E come ha detto @Rodrigo nel suo commento: "Non sembra bello ignorare gli errori".

---AGGIORNARE---

È inoltre possibile configurare maxmemorye maxmemory-policydefinire il comportamento di Redis quando viene raggiunto un limite specifico di memoria. Ad esempio, se voglio mantenere il limite di memoria di 6 GB ed eliminare dal DB le chiavi utilizzate meno di recente per accertarmi che l'utilizzo di redis mem non superi i 6 GB, possiamo impostare questi due parametri (in redis.conf o CONFIG SET comando):

maxmemory 6gb
maxmemory-policy allkeys-lru

Ci sono molti altri valori che puoi impostare per questi due parametri che puoi leggere su questo da qui: https://redis.io/topics/lru-cache


6

Una correzione più permanente potrebbe essere quella di guardare in /etc/redis/redis.conf intorno alle righe 200-250 ci sono impostazioni per le funzionalità rdb, che non facevano parte del redis nei giorni 2.x.

segnatamente

dir ./

può essere modificato in

dir /home/someuser/redislogfiledirectory

oppure potresti commentare tutte le righe di salvataggio e non preoccuparti della persistenza. (Vedi i commenti in /etc/redis/redis.conf)

Inoltre, non dimenticare

service redis-server stop
service redis-server start

6

tutte queste risposte non spiegano il motivo per cui il salvataggio di rdb non è riuscito.


come nel mio caso, ho controllato il registro redis e ho trovato:

14975: M 18 giu 13: 23: 07.354 # Salvataggio in background interrotto dal segnale 9

eseguire il seguente comando nel terminale:

sudo egrep -i -r 'killed process' /var/log/

visualizza:

/var/log/kern.log.1:Jun 18 13:23:07 10-10-88-16 kernel: [28152358.208108] Processo ucciso 28416 (redis-server) total-vm: 7660204kB, anon-rss: 2285492kB, file-rss: 0KB

questo è tutto! questo processo (redis save rdb) viene ucciso dal killer OOM

si riferisce:

https://github.com/antirez/redis/issues/1886

Scoprire quale processo è stato ucciso dal killer OOM di Linux


3

FWIW, mi sono imbattuto in questo e la soluzione era semplicemente aggiungere un file di scambio alla scatola. Ho usato questo metodo: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04


Come hai capito che il problema era l'overflow di memoria? Potrei avere lo stesso problema.
DarthSpeedious

@DarthSpeedious Non mi ricordo. Se dovessi indovinare, direi che forse qualcosa nei registri si lamentava di non essere in grado di allocare memoria. Mi dispiace non posso essere più utile.
Ryan Angilly,

In primo luogo ho pensato che sarebbe stata un'ottima soluzione lavorare con swap e redis combinati, poi ho fatto qualche ricerca e ho raggiunto questo articolo antirez.com/news/52 , che afferma che è un modo sbagliato di usare redis, comunque non lo sono Il 100% è d'accordo, sei soddisfatto delle prestazioni dell'uso di redis con swap?
talsibony,

1
@DarthSpeedious Nel tuo registro Redis vedresti errori " Impossibile allocare memoria ". Vedi qui su come visualizzare il file di registro: stackoverflow.com/questions/16337107/…
Bruno Peres

3

Anch'io stavo affrontando lo stesso problema. Entrambe le risposte (la più votata e quella accettata) forniscono solo una soluzione temporanea per lo stesso.

Inoltre, config set stop-writes-on-bgsave-error noè un modo orribile di guardare oltre questo errore, poiché ciò che fa questa opzione è impedire a redis di notificare che le scritture sono state interrotte e di andare avanti senza scrivere i dati in un'istantanea. Questo sta semplicemente ignorando questo errore. Riferiscilo

Per quanto riguarda l'impostazione dirin configredis-cli, una volta riavviato il servizio redis, anche questo verrà cancellato e verrà nuovamente visualizzato lo stesso errore. Il valore predefinito di dirin redis.confè ./, e se si avvia redis come utente root, allora ./è /a quali autorizzazioni di scrittura non vengono concesse e quindi l'errore.

Il modo migliore è impostare il dirparametro nel file redis.conf e impostare le autorizzazioni appropriate per quella directory. La maggior parte delle distribuzioni debian deve averlo/etc/redis/redis.conf


3

Oggi i problemi di accesso in scrittura di Redis che danno questo messaggio di errore al client sono riemersi nei rediscontainer docker ufficiali .

Redis dall'immagine ufficialeredis tenta di scrivere il file .rdb nella /datacartella dei contenitori , il che è piuttosto sfortunato, in quanto è una cartella di proprietà di root ed è anche una posizione non persistente (i dati scritti lì scompariranno se il tuo contenitore / pod si blocca).

Quindi dopo un'ora di inattività, se hai eseguito il rediscontainer come utente non root (ad es. docker run -u 1007Anziché come predefinito docker run -u 0), visualizzerai un messaggio di errore ben dettagliato nel registro del server (vedi docker logs redis):

1:M 29 Jun 2019 21:11:22.014 * 1 changes in 3600 seconds. Saving...
1:M 29 Jun 2019 21:11:22.015 * Background saving started by pid 499
499:C 29 Jun 2019 21:11:22.015 # Failed opening the RDB file dump.rdb (in server root dir /data) for saving: Permission denied
1:M 29 Jun 2019 21:11:22.115 # Background saving error

Quindi quello che devi fare è mappare la /datacartella del contenitore su una posizione esterna (dove l'utente non root, qui: 1007, ha accesso in scrittura, come /tmpsul computer host), ad esempio:

docker run --rm -d --name redis -p 6379:6379 -u 1007 -v /tmp:/data redis

Quindi è una configurazione errata dell'immagine docker ufficiale (che dovrebbe scrivere per /tmpnon /data) che produce questa "bomba a orologeria" che molto probabilmente incontrerai solo in produzione ... durante la notte in un fine settimana di vacanza particolarmente tranquillo: /


1
Volevo solo aggiungere un commento qui, poiché alla fine questo mi ha aiutato a risolvere i problemi che stavo affrontando con Redis in Docker. I nostri server UAT e Dev Docker sono Windows. Windows Defender identificherà i file RDB come potenziali virus. Quindi il montaggio della directory / data risolverà temporaneamente il problema principale; fino a quando Windows Defender mette in quarantena il file, causandone un altro. ASSICURARSI di aggiungere la directory dei dati montati come eccezione in Windows Defender per risolverlo.
TrevorB,

1
Mi ricorda che l'avviso di Windows Defender potrebbe non essere necessariamente un falso positivo - un cryptominer può infettare l'immagine Redis ufficiale anche quando viene eseguita senza root e con tutte le funzionalità eliminate - è sufficiente per esporre la sua porta alla rete
mirekphd

Grazie, è un buon punto. Solo curioso, ma come verrebbe eseguito un file RDB sull'host, specialmente Windows? Suppongo che potrebbe essere in esecuzione all'interno del contenitore stesso. Ma questo non è specifico per questo particolare contenitore.
TrevorB,

1
Bene, il payload probabilmente non verrebbe eseguito su Windows, a meno che non sia scritto interamente in Lua e quindi multipiattaforma come lo stesso Redis ... il comando eval è un'invenzione del diavolo, indipendentemente dalla lingua
mirekphd

Questa è stata un'esperienza illuminante; grazie mille. Apparentemente, i nostri file di composizione UAT / DEV esponevano porte al di fuori della rete Docker. Non so come sia possibile, ma quelle istanze stavano ricevendo comandi di amministrazione e, anzi. stavano lanciando un cripto minatore. Ho disabilitato quelle porte, disattivato il mount RDB locale e reinstallato l'eccezione di Windows Defender (anche se non importa con il mount disattivato). Ho bisogno di indagare su come questi comandi stessero attraversando il nostro firewall, ma sto monitorando attentamente
TrevorB

3

per me

config set stop-writes-on-bgsave-error no

e ricarico il mio mac, funziona


1

Ho riscontrato questo problema mentre lavoravo su un server con spazio su disco AFS perché il mio token di autenticazione era scaduto, il che ha prodotto Permission Deniedrisposte quando il redis-server ha tentato di salvare. Ho risolto questo aggiornando il mio token:

kinit USERNAME_HERE -l 30d && aklog


1

Nel caso in cui si utilizzi docker / docker-compose e si desideri impedire a redis di scrivere su file, è possibile creare una configurazione redis e montarla in un contenitore

docker.compose.override.yml

  redis:¬
      volumes:¬
        - ./redis.conf:/usr/local/etc/redis/redis.conf¬
      ports:¬
        - 6379:6379¬

Puoi scaricare la configurazione predefinita da qui

nel file redis.conf assicurati di commentare queste 3 righe

save 900 1
save 300 10
save 60 10000

Puoi visualizzare più soluzioni per rimuovere i dati persistenti qui


1

Nel mio caso è successo perché ho appena installato redisusando il modo rapido. Quindi redis non funziona come root. Sono stato in grado di risolvere questo problema seguendo le istruzioni nella Installing Redis more properlysezione della loro Guida rapida . Dopo averlo fatto, il problema è stato risolto e redisora è in esecuzione come root. Controlla.


1

Dopo aver sbattuto la testa attraverso così tante domande SO finalmente - per me la risposta di @Axel Advento ha funzionato ma con pochi passaggi extra - mi trovavo ancora di fronte ai problemi di autorizzazione.
Ho dovuto cambiare utente redis, creare una nuova directory nella sua home directory e quindi impostarla come dir di redis.

sudo su - redis -s /bin/bash
mkdir redis_dir
redis-cli CONFIG SET dir $(realpath redis_dir)
exit # to logout from redis user (optional)

0

Nel mio caso era legato allo spazio libero su disco. (puoi controllarlo con il df -hcomando bash) quando libero spazio questo errore è scomparso.


0

Se si esegue Redis localmente su un computer Windows, provare a "eseguirlo come amministratore" e vedere se funziona. Con me, il problema era che Redis si trovava nella cartella "Programmi", che limita le autorizzazioni per impostazione predefinita. Come dovrebbe.

Tuttavia, non eseguire automaticamente Redis come amministratore. Non si desidera concedergli più diritti che dovrebbe avere. Vuoi risolverlo con il libro.

Quindi, siamo stati in grado di identificare rapidamente il problema eseguendolo come amministratore, ma questa non è la cura. Uno scenario probabile è che hai messo Redis in una cartella che non ha diritti di scrittura e di conseguenza il file DB è archiviato nella stessa posizione.

È possibile risolvere questo problema aprendo redis.windows.confe per cercare la seguente configurazione:

    # The working directory.
    #
    # The DB will be written inside this directory, with the filename specified
    # above using the 'dbfilename' configuration directive.
    #
    # The Append Only File will also be created inside this directory.
    #
    # Note that you must specify a directory here, not a file name.
    dir ./

Passare dir ./a un percorso per il quale si dispone di autorizzazioni regolari di lettura / scrittura

Puoi anche spostare la cartella Redis nella sua interezza in una cartella che sai che ha le autorizzazioni giuste.


0

Per me era solo un problema di autorizzazioni per la cartella di dati redis persistenti. Gli ho dato un:

chmod 777 -Rf data/

E funziona! Potrebbe essere presto per dire che risolve il problema. Perché sospetto anche che redis non stia eseguendo come root, quindi ho bisogno di ispezionare il mio dockerFile per capire di più.


0

Controlla il tuo registro Redis prima di intraprendere qualsiasi azione. Alcune delle soluzioni in questo thread potrebbero cancellare i tuoi dati Redis, quindi fai attenzione a ciò che stai facendo.

Nel mio caso, la macchina stava esaurendo la RAM . Questo può accadere anche quando non c'è più spazio libero su disco nell'host.


0

Tieni presente che questo errore viene visualizzato quando il tuo server è sotto attacco. Ho appena scoperto che redis non riesce a scrivere in '/etc/cron.d/web' dove, dopo aver corretto i permessi, è stato aggiunto un nuovo file costituito da un algoritmo di mining con alcune opzioni nascoste.


0
# on redis 6.0.4 
# if show error 'MISCONF Redis is configured to save RDB snapshots'
# Because redis doesn't have permissions to create dump.rdb file
sudo redis/bin/redis-server 
sudo redis/bin/redis-cli

-1

Come sottolineato da @Chris, è probabile che il problema abbia poca memoria. Abbiamo iniziato a sperimentarlo quando abbiamo allocato troppa RAM su MySQL ( innodb_buffer_pool_size).

Per garantire che ci sia abbastanza RAM per Redis e altri servizi che abbiamo ridotto innodb_buffer_pool_sizesu MySQL.


-1

Nel mio caso, la ragione era lo spazio libero sul disco molto basso (solo 35 Mb). Ho fatto quanto segue -

  1. Arrestato tutto il processo relativo a Redis
  2. Elimina alcuni file sul disco per creare spazio libero adeguato
  3. Elimina il file di dump redis (se non sono necessari dati esistenti)

    sudo rm /var/lib/redis/*

  4. Elimina tutte le chiavi di tutti i database esistenti

    sudo redis-cli flushall

  5. riavviare tutte le attività del sedano e controllare i registri corrispondenti per eventuali problemi

1
Devi averlo fatto sulla tua istanza di sviluppo. Soluzione non giusta quando si tratta di applicazioni incentrate sui dati.
Nikesh Devaki

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.