MISCONF Redis está configurado para guardar instantáneas RDB

366

Durante las escrituras a Redis ( SET foo bar) obtengo el siguiente error:

MISCONF Redis está configurado para guardar instantáneas RDB, pero actualmente no puede persistir en el disco. Los comandos que pueden modificar el conjunto de datos están deshabilitados. Consulte los registros de Redis para obtener detalles sobre el error.

Básicamente entiendo que el problema es que redis no puede guardar datos en el disco, pero no tengo idea de cómo deshacerse del problema.

Además, la siguiente pregunta tiene el mismo problema, se abandonó hace mucho tiempo sin respuestas y muy probablemente sin intentos de resolver el problema.

Salvador Dalí
fuente
Pudiste resolver este problema. En caso afirmativo, ¿podría ayudarme con los pasos? Porque colocar el archivo rdb en otro lugar no lo resolvería, supongo. Creo que me falta algo aquí
ankur
44
Este error se produce al iniciar el servidor redis en un directorio donde redis no tiene permisos. Recomiendo volver a la configuración predeterminada después de solucionar el problema: consulte la respuesta sobre una solución a este problema.
Govind Rai el
Además de la respuesta de Govind Rai: stackoverflow.com/a/47880440/5649620
Vyshnav Ramesh Thrissur
@GovindRai Ya he otorgado el permiso de redis al cambiar tanto el grupo como el propietario redis, ¡pero no ayuda!
wdetac

Respuestas:

184

En caso de que encuentre el error y algunos datos importantes no se puedan descartar en la instancia de redis en ejecución (problemas con los permisos para el rdbarchivo o su directorio incorrectamente, o quedarse sin espacio en disco), siempre puede redirigir el rdbarchivo para que se escriba en otro lugar.

Usando redis-cli, puedes hacer algo como esto:

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

Después de esto, es posible que desee ejecutar un BGSAVEcomando para asegurarse de que los datos se escribirán en el rdbarchivo. Asegúrese de que cuando ejecute INFO persistence, bgsave_in_progressya esté 0y rdb_last_bgsave_statusesté ok. Después de eso, ahora puede comenzar a hacer una copia de seguridad del rdbarchivo generado en un lugar seguro.

Axel Advento
fuente
77
rdb_bgsave_in_progress: 0 bajo Persistencia
thanikkal
Por alguna razón, cuando intento cualquier comando config set, parece que se sigue cargando para siempre.
Bashar Abdullah
55
Para aquellos desafortunados que están en Windows, mí en este momento, y Whoa está utilizando la versión MSOpenTech, usted tiene que ruta del directorio set en el siguiente estilo: dir C:/Temp/. Haga un bgsave para verificar que funciona ..
John P
@ John P, eso era justo lo que había que hacer. ¡Gracias!
Sam
2
127.0.0.1:6379> CONFIG SET dir / root / tool (error) ERR Cambio de directorio: Permiso denegado
Gank
317

Utilizando redis-cli, puede detenerlo tratando de guardar la instantánea:

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

Esta es una solución rápida, pero si le importan los datos para los que la está utilizando, debe verificar para asegurarse de por qué bgsave falló en primer lugar.

思考 zhe
fuente
21
esta es una solución rápida, pero debe verificar para asegurarse de por qué bgsave falló en primer lugar
Mandeep Singh
77
Si usa redis principalmente para el almacenamiento en caché y las sesiones, esto es imprescindible.
Jim
1
¿No es esto peligroso? Por ejemplo, NodeBB usa Redis como un almacén de datos.
codecowboy
2
@LoveToCode config set stop-write-on-bgsave-error yes
Phil
44
Cada vez que reinicio el servidor, tengo el mismo problema nuevamente. Entonces tengo que configurarlo de nuevo. ¿Cómo puedo hacer que sea permanente?
Zia Qamar
63

Puede haber errores durante el proceso de bgsave debido a la poca memoria. Pruebe esto (desde el fondo de redis guarde las preguntas frecuentes)

echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
sysctl vm.overcommit_memory=1
Chris
fuente
55
ENLACE : redis.io/topics/faq Busque esto: " El ahorro de fondo está fallando con un error fork () en Linux, incluso si tengo mucha RAM libre "
Bruno Peres
49

Este error se produce porque BGSAVE ha fallado. Durante BGSAVE, Redis bifurca un proceso secundario para guardar los datos en el disco. Aunque la razón exacta de la falla de BGSAVE puede verificarse desde los registros (generalmente en /var/log/redis/redis-server.logmáquinas Linux), pero muchas veces BGAVE falla porque la bifurcación no puede asignar memoria. Muchas veces, la bifurcación no puede asignar memoria (aunque la máquina tiene suficiente RAM disponible) debido a una optimización conflictiva por parte del sistema operativo.

Como se puede leer en las preguntas frecuentes de Redis :

El esquema de guardado en segundo plano de Redis se basa en la semántica de copia en escritura de fork en los sistemas operativos modernos: Redis forks (crea un proceso hijo) que es una copia exacta del padre. El proceso secundario volca la base de datos en el disco y finalmente se cierra. En teoría, el niño debería usar tanta memoria como el padre como copia, pero en realidad, gracias a la semántica de copia en escritura implementada por la mayoría de los sistemas operativos modernos, el proceso padre e hijo compartirá las páginas de memoria comunes. Una página se duplicará solo cuando cambie en el niño o en el padre. Dado que, en teoría, todas las páginas pueden cambiar mientras se guarda el proceso secundario, Linux no puede saber de antemano cuánta memoria tomará el niño, por lo que si la configuración overcommit_memory se establece en cero, la bifurcación fallará a menos que haya tanta RAM libre como requerido para duplicar realmente todas las páginas de memoria principal,

Establecer overcommit_memory en 1 dice que Linux se relaje y realice la bifurcación de una manera de asignación más optimista, y esto es lo que quiere para Redis.

Redis no necesita tanta memoria como el sistema operativo cree que necesita para escribir en el disco, por lo que puede fallar preventivamente la bifurcación.

Para resolver esto, puedes:

Modificar /etc/sysctl.confy agregar:

vm.overcommit_memory=1

Luego reinicie sysctl con:

En FreeBSD:

sudo /etc/rc.d/sysctl reload

En Linux:

sudo sysctl -p /etc/sysctl.conf
Bhindi
fuente
La salida de systemctl status redisreveló que hay una advertencia que sugiere cambiar exactamente la overcommit_memory=0configuración. Alterar eso realmente resolvió el problema para mí.
Algoritmo abstracto
Esto resolvió el problema correctamente y debería ser la respuesta aceptada
DSynergy
Entonces, el tldr sería, con la configuración predeterminada, si redis está usando 10 gb de ram, ¿necesita tener 10 gb de ram libre para que este proceso secundario pueda ejecutarse?
Dan Hastings
@DanHastings - Sí Y establecer overcommit_memory en 1 relaja este requisito.
Bhindi
26

Reinicie su servidor redis.

  • macOS (cerveza) : brew services restart redis.
  • Linux: sudo service redis restart /sudo systemctl restart redis
  • Windows: Windows + R-> Tipo services.msc, Enter-> Buscar y Redisluego haga clic en restart.

Personalmente tuve este problema después de actualizar redis con Brew ( brew upgrade). Después de reiniciar la computadora portátil, funcionó de inmediato.

Erowlin
fuente
Si alguien está leyendo esto tuve el problema con Homebrew también, pero nada que ver con la actualización: Sólo necesitaba para iniciar el servicio con sudo: brew services stop redis; sudo brew services start redis.
bfontaine
24

en caso de que esté trabajando en una máquina Linux, también vuelva a verificar los permisos de archivos y carpetas de la base de datos.

La base de datos y la ruta a ella se pueden obtener a través de:

en redis-cli:

CONFIGURAR OBTENER dir

CONFIG GET dbfnamename

y en la línea de comando ls -l. Los permisos para el directorio deben ser 755 , y los del archivo deben ser 644 . Además, normalmente redis-server se ejecuta como el usuario redis, por lo tanto, también es bueno darle al usuario redisla propiedad de la carpeta mediante la ejecución sudo chown -R redis:redis /path/to/rdb/folder. Esto ha sido elaborado en la respuesta aquí .

smilee89
fuente
¿Qué permisos deberían ser?
Stephen
Esto funcionó para mí. ¡Gracias!
Lordwhizy
19

Gracias a todos por verificar el problema, aparentemente el error se produjo durante bgsave.

Para mí, escribir config set stop-writes-on-bgsave-error noun shell y reiniciar Redis resolvió el problema.

Salvador Dalí
fuente
82
Eso no "resolvió el problema", simplemente lo ignoró.
Buffalo
Reiniciar RedisServer en Services.msc funcionó para mí.
ViPuL5
Cada vez que reinicio el servidor, tengo el mismo problema nuevamente. Entonces tengo que configurarlo de nuevo. ¿Cómo puedo hacer que sea permanente?
Zia Qamar
@ZiaQamar, puede establecer la propiedad permanentemente en redis.conf, que probablemente esté en /etc/redis/redis.conf, establezca "stop-writes-on-bgsave-error no"
Gaurav Tyagi
OMI definitivamente no es la solución. Solo le está diciendo a Redis que no registre esos errores. Pero los errores siguen ahí ...
Erowlin
17

Inicie Redis Server en un directorio donde Redis tiene permisos de escritura

Las respuestas anteriores definitivamente resolverán su problema, pero esto es lo que realmente está sucediendo:

La ubicación predeterminada para almacenar el rdb.dumparchivo es ./(denotando el directorio actual). Puede verificar esto en su redis.confarchivo. Por lo tanto, el directorio desde donde inicia el servidor redis es donde dump.rdbse creará y actualizará un archivo.

Parece que ha comenzado a ejecutar el servidor redis en un directorio donde redis no tiene los permisos correctos para crear el dump.rdbarchivo.

Para empeorar las cosas, redis probablemente tampoco le permitirá apagar el servidor hasta que pueda crear el archivo rdb para garantizar el correcto almacenamiento de los datos.

Para resolver este problema, debe ingresar al entorno activo del cliente redis utilizando redis-cliy actualizando la dirclave y estableciendo su valor en la carpeta de su proyecto o en cualquier carpeta en la que el usuario no root tenga permisos para guardar. Luego, ejecute BGSAVEpara invocar la creación del dump.rdbarchivo.

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

(Ahora, si necesita guardar el archivo dump.rdb en el directorio en el que inició el servidor, deberá cambiar los permisos para que el directorio pueda escribir en él. Puede buscar en stackoverflow cómo hacerlo). )

Ahora debería poder cerrar el servidor redis. Tenga en cuenta que codificamos el camino. El hardcoding rara vez es una buena práctica y recomiendo iniciar el servidor redis desde el directorio de su proyecto y cambiar el dir key back to. / `.

CONFIG SET dir "./"
BGSAVE

De esta forma, cuando necesite redis para otro proyecto, el archivo de volcado se creará en el directorio de su proyecto actual y no en el directorio de proyecto de la ruta codificada.

Govind Rai
fuente
Asegúrese de otorgar permiso del usuario no root para el directorio en el que se almacenará el archivo de volcado. En mi caso, tengo un usuario, redisasí que: sudo chown redis:redis /var/lib/redis
RoundOutTooSoon
13

Si está ejecutando MacOS y se ha actualizado recientemente a Catalina, es posible que deba ejecutar brew services restart rediscomo se sugiere en este número .

Fush
fuente
12

Encontré este error y pude averiguar en el registro que el error se debe a que el espacio en disco no es suficiente. Todos los datos que se insertaron en mi caso ya no eran necesarios. Así que traté de FLUSHALL. Dado que el proceso redis-rdb-bgsave se estaba ejecutando, tampoco permitía ENJUAGAR los datos. Seguí los pasos a continuación y pude continuar.

  1. Inicie sesión en redis client
  2. Ejecute el conjunto de configuración stop-write-on-bgsave-error no
  3. Ejecutar FLUSHALL (no se necesitaban los datos almacenados)
  4. Ejecute el conjunto de configuración stop-write-on-bgsave-error yes

El proceso redis-rdb-bgsave ya no se estaba ejecutando después de los pasos anteriores.

RCK
fuente
7

Me enfrenté al problema similar, la razón principal detrás de esto fue el consumo de memoria (RAM) por redis. Mi máquina EC2 tenía 8 GB de RAM (arounf 7.4 disponible para consumo)

Cuando mi programa se estaba ejecutando, el uso de RAM subió a 7.2 GB dejando apenas ~ 100 MB en RAM, esto generalmente desencadena el MISCONF Redis error ...

Puede determinar el consumo de RAM con el htopcomando. Busque el atributo Mem después de ejecutar el comando htop. Si muestra un alto consumo (como en mi caso fue de 7.2GB / 7.4GB) Es mejor actualizar las instancias con mayor memoria. En este escenario, el uso config set stop-writes-on-bgsave-error noserá un desastre para el servidor y puede provocar la interrupción de otros servicios que se ejecutan en el servidor (si corresponde). Por lo tanto, es mejor evitar el comando config y ACTUALIZAR SU MÁQUINA REDIS .

FYI: Puede que necesite instalar htop para que esto funcione:sudo apt-get install htop

Una solución más a esto puede ser algún otro servicio pesado de RAM que se ejecute en su sistema, verifique si hay otro servicio que se ejecute en su servidor / máquina / instancia y deténgalo si no es necesario. Para verificar todos los servicios que se ejecutan en su máquina, useservice --status-all

Y una sugerencia para las personas que pegan directamente el comando de configuración, por favor investigue un poco y al menos advierta al usuario antes de usar dichos comandos. Y como @Rodrigo mencionó en su comentario: "No se ve bien ignorar los errores".

---ACTUALIZAR---

También puede configurar maxmemoryy maxmemory-policydefinir el comportamiento de Redis cuando se alcanza un límite específico de memoria. Por ejemplo, si quiero mantener el límite de memoria de 6 GB y eliminar las claves utilizadas menos recientemente de la base de datos para asegurarme de que el uso de redis mem no supere los 6 GB, entonces podemos establecer estos dos parámetros (en redis.conf o CONFIG SET) mando):

maxmemory 6gb
maxmemory-policy allkeys-lru

Hay muchos otros valores que puede establecer para estos dos parámetros que puede leer sobre esto desde aquí: https://redis.io/topics/lru-cache

Bhatman
fuente
6

Una solución más permanente podría ser buscar en /etc/redis/redis.conf alrededor de las líneas 200-250 hay configuraciones para las funciones rdb, que no formaban parte de redis en los días 2.x.

notablemente

dir ./

se puede cambiar a

dir /home/someuser/redislogfiledirectory

o puede comentar todas las líneas guardadas y no preocuparse por la persistencia. (Ver los comentarios en /etc/redis/redis.conf)

Además, no olvides

service redis-server stop
service redis-server start
Taza de sopa
fuente
6

Todas esas respuestas no explican la razón por la cual falló el guardado de rdb.


como mi caso, revisé el registro de redis y encontré:

14975: M 18 13 de junio: 23: 07.354 # Ahorro de fondo terminado por la señal 9

ejecuta el siguiente comando en la terminal:

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

muestra:

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

¡eso es! este proceso (redis save rdb) es asesinado por OOM killer

se refiere:

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

Encontrar qué proceso fue asesinado por el asesino de OOM de Linux

carton.swing
fuente
3

FWIW, me encontré con esto y la solución fue simplemente agregar un archivo de intercambio a la caja. Usé este método: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

Ryan Angilly
fuente
¿Cómo descubriste que el problema era el desbordamiento de memoria? Podría estar teniendo el mismo problema.
DarthSpeedious
@DarthSpeedious no me acuerdo. Si tuviera que adivinar, diría que tal vez algo en los registros se quejaba de no poder asignar memoria. Lo siento, no puedo ser más útil.
Ryan Angilly
En primer lugar, pensé que también sería una gran solución trabajar con swap y redis combinados, luego investigué un poco y llegué a este artículo antirez.com/news/52 , que afirma que es una forma incorrecta de usar redis, de todos modos no estoy 100% de acuerdo, ¿estás contento con el rendimiento de usar redis con swap?
talsibony
1
@DarthSpeedious En su registro de Redis, verá errores de " No se puede asignar memoria ". Vea aquí cómo ver el archivo de registro: stackoverflow.com/questions/16337107/…
Bruno Peres
3

Yo también estaba enfrentando el mismo problema. Ambas respuestas (la más votada y la aceptada) solo dan una solución temporal para la misma.

Además, config set stop-writes-on-bgsave-error noes una forma horrible de pasar por alto este error, ya que lo que hace esta opción es evitar que Redis notifique que se han detenido las escrituras y seguir adelante sin escribir los datos en una instantánea. Esto simplemente ignora este error. Refiera esto

En cuanto a la configuración diren configredis-cli, una vez que reinicie el servicio de redis, esto también se borrará y aparecerá el mismo error nuevamente. El valor predeterminado de dirin redis.confes ./, y si comienza a redis como usuario root, entonces ./es /a qué permisos de escritura no se otorgan, y de ahí el error.

La mejor manera es establecer el dirparámetro en el archivo redis.conf y establecer los permisos adecuados para ese directorio. La mayoría de las distribuciones de Debian lo tendrán en/etc/redis/redis.conf

Mayank Sharma
fuente
3

Hoy en día, los problemas de acceso de escritura de Redis que le dan este mensaje de error al cliente volvieron a aparecer en los rediscontenedores oficiales del acoplador.

Redis de la redisimagen oficial intenta escribir el archivo .rdb en la /datacarpeta de contenedores , lo cual es bastante desafortunado, ya que es una carpeta propiedad de raíz y también es una ubicación no persistente (los datos escritos allí desaparecerán si su contenedor / pod se bloquea).

Entonces, después de una hora de inactividad, si ha ejecutado su rediscontenedor como un usuario no root (por ejemplo, en docker run -u 1007lugar de predeterminado docker run -u 0), obtendrá un mensaje de error muy detallado en el registro de su servidor (ver 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

Entonces, lo que debe hacer es asignar la /datacarpeta del contenedor a una ubicación externa (donde el usuario no root, aquí: 1007, tiene acceso de escritura, como /tmpen la máquina host), por ejemplo:

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

Por lo que es una mala configuración de la imagen de la ventana acoplable oficial (que debe escribir en /tmpno /data) que produce esta "bomba de tiempo" que es muy probable que el encuentro sólo en la producción ... durante la noche sobre algún fin de semana especialmente silencioso: /

mirekphd
fuente
1
Solo quería agregar un comentario aquí, ya que esto finalmente ayudó a resolver los problemas que enfrentaba con redis en Docker. Nuestros servidores UAT y Dev Docker son Windows. Windows Defender identificará los archivos RDB como virus potenciales. Por lo tanto, montar su directorio / data resolverá temporalmente el problema principal; hasta que Windows Defender ponga en cuarentena el archivo y cause otro. ASEGÚRESE de agregar el directorio de datos montado como una excepción en Windows Defender para resolver esto.
TrevorB
1
Me recuerda: que la alerta de Windows Defender puede no ser necesariamente un falso positivo: un cryptominer puede infectar la imagen oficial de Redis incluso cuando se ejecuta sin root y con todas las capacidades caídas, es suficiente para exponer su puerto a la red
mirekphd
Gracias, ese es un buen punto. Es curioso, pero ¿cómo se ejecutaría un archivo RDB en el host, especialmente en Windows? Supongo que podría estar ejecutándose dentro del contenedor mismo. Pero eso no es específico de este contenedor en particular.
TrevorB
1
Correcto, la carga útil probablemente no se ejecute en Windows, a menos que esté escrita completamente en Lua y, por lo tanto, multiplataforma como el propio Redis ... el comando eval es una invención del diablo, independientemente del idioma
mirekphd
Esta ha sido una experiencia esclarecedora; muchas gracias. Aparentemente, nuestros archivos de composición UAT / DEV estaban exponiendo puertos fuera de la red Docker. No sé cómo es esto posible, pero esas instancias estaban recibiendo comandos de administrador y, de hecho. estaban lanzando un cripto minero. Deshabilité esos puertos, apagué el montaje RDB local y reinstalé la excepción de Windows Defender (aunque eso no importará con el montaje apagado). Necesito investigar cómo estos comandos atravesaron nuestro firewall, pero estoy monitoreando de cerca
TrevorB
3

para mi

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

y recargo mi mac, funciona

wuhaiwei
fuente
1

Me encontré con este problema mientras trabajaba en un servidor con espacio en disco AFS porque mi token de autenticación había expirado, lo que produjo Permission Deniedrespuestas cuando el servidor redis intentó guardar. Resolví esto actualizando mi token:

kinit USERNAME_HERE -l 30d && aklog

duhaime
fuente
1

En caso de que esté usando docker / docker-compose y desee evitar que redis escriba en el archivo, puede crear una configuración de redis y montarla en un contenedor

docker.compose.override.yml

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

Puede descargar la configuración predeterminada desde aquí

en el archivo redis.conf asegúrese de comentar estas 3 líneas

save 900 1
save 300 10
save 60 10000

Puede ver más soluciones para eliminar los datos persistentes aquí.

Nic Wanavit
fuente
1

En mi caso sucedió porque acabo de instalar redisusando la forma rápida. Entonces redis no se está ejecutando como root. Pude resolver este problema siguiendo las instrucciones en la Installing Redis more properlysección de su Guía de inicio rápido . Después de hacerlo, el problema se resolvió y redisahora se ejecuta como root. Echale un vistazo.

miau2x
fuente
1

Después de golpearme la cabeza con tantas preguntas SO finalmente, para mí la respuesta de @Axel Advento funcionó pero con unos pocos pasos adicionales, todavía me enfrentaba a los problemas de permisos.
Tuve que cambiar de usuario a redis, crear un nuevo directorio en el directorio de inicio y luego configurarlo como el directorio de 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)
markroxor
fuente
0

En mi caso, estaba relacionado con el espacio libre en disco. (puede verificarlo con el df -hcomando bash) cuando libero espacio, este error desapareció.

Mohammad Reza Esmaeilzadeh
fuente
0

Si está ejecutando Redis localmente en una máquina con Windows, intente "ejecutar como administrador" y vea si funciona. Conmigo, el problema era que Redis estaba ubicado en la carpeta "Archivos de programa", lo que restringe los permisos de forma predeterminada. Como debería.

Sin embargo, no ejecute Redis automáticamente como administrador . No desea otorgarle más derechos de los que se supone que tiene. Quieres resolver esto con el libro.

Por lo tanto, hemos podido identificar rápidamente el problema ejecutándolo como administrador, pero esta no es la solución. Un escenario probable es que haya puesto Redis en una carpeta que no tiene derechos de escritura y, como consecuencia, el archivo DB se almacena en esa misma ubicación.

Puede resolver esto abriendo redis.windows.confy para buscar la siguiente configuración:

    # 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 ./

Cambie dir ./a una ruta para la que tenga permisos de lectura / escritura regulares

También puede simplemente mover la carpeta Redis en su totalidad a una carpeta que sabe que tiene los permisos correctos.

Pascalculador
fuente
0

Para mí fue solo un problema de permisos en la carpeta de datos de redis persistente. Le di un:

chmod 777 -Rf data/

¡Y funciona! Puede ser temprano para decir que está resolviendo el problema. Debido a que también sospecho que redis no se está ejecutando como root, entonces necesito inspeccionar mi dockerFile para descubrir más.

macherif
fuente
0

Verifique su registro de Redis antes de tomar cualquier medida. Algunas de las soluciones en este hilo pueden borrar sus datos de Redis, así que tenga cuidado con lo que está haciendo.

En mi caso, la máquina se estaba quedando sin RAM . Esto también puede suceder cuando no hay más espacio libre en disco en el host.

Erfun
fuente
0

Tenga en cuenta que este error aparece cuando su servidor está bajo ataque. Acabo de descubrir que redis no puede escribir en '/etc/cron.d/web' donde, después de corregir los permisos, se agregó un nuevo archivo que consiste en un algoritmo de minería con algunas opciones de ocultación.

qzaki
fuente
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
youwei fan
fuente
-1

Como señaló @Chris, es probable que el problema se deba a poca memoria. Comenzamos a experimentarlo cuando asignamos demasiada RAM a MySQL ( innodb_buffer_pool_size).

Para garantizar que haya suficiente RAM para Redis y otros servicios, redujimos innodb_buffer_pool_sizeen MySQL.

Mugoma J. Okomba
fuente
-1

En mi caso, la razón era muy poco espacio libre en el disco (solo 35 Mb). Hice lo siguiente -

  1. Se detuvo todo el proceso relacionado con Redis
  2. Eliminar algunos archivos en el disco para hacer espacio libre adecuado
  3. Eliminar el archivo de volcado de redis (si no se necesitan datos existentes)

    sudo rm /var/lib/redis/*

  4. Eliminar todas las claves de todas las bases de datos existentes

    sudo redis-cli flushall

  5. reinicie todas las tareas de apio y verifique los registros correspondientes para cualquier problema
rajarshig
fuente
1
Debes haber hecho esto en tu instancia de desarrollo. No es la solución correcta cuando se trata de aplicaciones centradas en datos.
Nikesh Devaki
-1

debe chmod y chown la nueva carpeta

chown -R redis y chmod ...

Mohamed-yassine Belatar
fuente