Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 47166|Respuesta: 1

[Fuente] Redis MISCONF Redis está configurado para guardar instantáneas RDB

[Copiar enlace]
Publicado el 14-05-2021 a las 21:18:50 | | | |
Usando StackExchange.Redis para manipular la caché redis, el error es el siguiente:

StackExchange.Redis.RedisServerException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

Solución temporal, modificar el archivo redis.windows.conf,El servicio Redis necesita reiniciarse, establezca de la siguiente manera:
Si no quieres reiniciar el servicio Redis, puedes usar el comando redis-cli para configurarlo de la siguiente manera:



La explicación es la siguiente:
# Por defecto, Redis dejará de aceptar escrituras si se activan las instantáneas RDB
# (al menos un punto de guardado) y la última partida en segundo plano falló.
# Esto hará que el usuario sea consciente (de forma dura) de que los datos no persisten
# en disco correctamente, si no, lo más probable es que nadie se dé cuenta y algunos
# El desastre ocurrirá.
#
# Si el proceso de guardado en segundo plano vuelve a funcionar, Redis lo hará
# permitir automáticamente escrituras de nuevo.
#
# Sin embargo, si has configurado tu monitorización adecuada del servidor Redis
# y persistencia, quizá quieras desactivar esta función para que Redis
# seguir funcionando como siempre aunque haya problemas con el disco,
# permisos, y demás.
En pocas palabras: Redis necesita bifurcar un proceso principal para evitar que este finja la muerte al guardar datos en el disco duro, y luego completar la operación de guardar datos en el disco duro en el proceso de la bifurcación; si el proceso principal usa 4GB de memoria, se necesitan 4GB adicionales cuando se necesita el subproceso de la bifurcación; en ese momento la memoria no es suficiente, la bifurcación falla, y luego también falla el disco duro de guardado de datos.

Para ver los registros de Redis, necesitas configurar redis.windows.conf de la siguiente manera:

# Especifica el nombre del archivo de registro. Además, 'stdout' puede usarse para forzar
# Redis para registrar la salida estándar.
archivo de registro "E:/Redis-x64-3.2.100/redis.txt"

Las excepciones en logarítmica son las siguientes:

[8984] 14 de mayo 14:05:09.060 * Guardado en segundo plano iniciado por pid 8672
[8672] 14 de mayo 14:05:09.169 #
La versión de Windows de Redis reserva memoria heap del archivo de paginación del sistema
para compartir con el proceso bifurcado utilizado para operaciones de persistencia. En este momento no hay suficiente espacio libre contiguo disponible en el
Archivo de paginación del sistema. Puedes aumentar el tamaño del archivo de paginación del sistema.
A veces, un reinicio desfragmenta el archivo de paginación del sistema lo suficiente para
esta operación se completó con éxito.

Redis no puede continuar. Saliendo.
[8984] 14 de mayo 14:05:09.278 # operación de bifurcación fallida



Tras el análisis, se comprobó que el problema con la configuración de tamaño máximo del heap "maxheap" se debía a la memoria disponible insuficiente.

Solución

Abre el archivo de configuración de Redis "redis.windows.conf" y encuentra la siguiente sección de código:


# El heap de Redis debe ser mayor que el valor especificado por maxmemory
# flag, ya que el asignador de heap tiene sus propios requisitos de memoria y
# La fragmentación del montón es inevitable. Si solo la bandera maxmemory es
# especificado, maxheap se pondrá en 1,5*maxmemory. Si la bandera de maxheap es
# especificado junto con maxmemory, la bandera maxheap será automáticamente
# aumentado si es menor que 1,5*maxmemory.
#  
# Maxheap <bytes>

Añadir este ajuste es bueno,El servicio Redis no arranca!!!!!!!
El valor por defecto es: maxheap 1024000000≈976,56M

No encontré este comentario en el archivo de conferencia, encontré algo así:
# No uses más memoria de la cantidad de bytes especificada.
# Cuando se alcance el límite de memoria, Redis intentará eliminar las teclas
# Según la política de desahucio seleccionada (véase maxmemory-policy).
#
# Si Redis no puede quitar las llaves según la política, o si la política es
# configurado en 'noeviction', Redis empezará a responder con errores a los comandos
# que consumiría más memoria, como SET, LPUSH, etc., y continuará
# para responder a comandos de solo lectura como GET.
#
# Esta opción suele ser útil al usar Redis como caché LRU, o para establecer
# Un límite de memoria dura para una instancia (usando la política de 'noeviction').
#
# ADVERTENCIA: Si tienes esclavos adjuntos a una instancia con maxmemory activado,
# Se resta el tamaño de los buffers de salida necesarios para alimentar a los esclavos
# del recuento de memoria utilizada, de modo que los problemas de red / resincronizaciones
# no activar un bucle donde se expulsan las teclas y, a su vez, la salida
# el búfer de esclavos está lleno con DELs de claves expulsadas que desencadenan la eliminación
# de más claves, y así sucesivamente hasta que la base de datos se vacía por completo.
#
# En resumen... Si tienes esclavos adjuntos, se sugiere poner un lower
# límite para maxmemory para que haya algo de RAM libre en el sistema para el esclavo
# búferes de salida (pero esto no es necesario si la política es 'noeviction').
#
# ADVERTENCIA: no configurar maxmemory hará que Redis termine con un
# Excepción fuera de memoria si se alcanza el límite del heap.
#
# NOTA: dado que Redis utiliza el archivo de paginación del sistema para asignar la memoria heap,
# el uso de memoria del conjunto de trabajo mostrado por el Administrador de tareas de Windows o por otros
# herramientas como ProcessExplorer no siempre serán precisas. Por ejemplo, derecha
# tras una partida en segundo plano de los archivos RDB o AOF, el valor del conjunto de trabajo
# puede caer significativamente. Para comprobar la cantidad correcta de memoria utilizada
# por el servidor redis-server para almacenar los datos, usar el comando cliente INFO. La INFORMACIÓN
# Comando muestra solo la memoria utilizada para almacenar los datos de Redis, no el extra
# memoria utilizada por el proceso de Windows para sus propios requisitos. Th3 cantidad extra
# de memoria no reportada por el comando INFO se puede calcular restando el
# Conjunto de trabajo de pico reportado por el Administrador de tareas de Windows y el used_memory_peak
# reportado por el comando INFO.
#
# maxmemory <bytes>

Advertencia: Si se alcanza el límite del heap, no configurar maxmemory hará que Redis termine con una excepción por falta de memoria.

Nota: Debido aRedis utiliza archivos de paginación del sistema para asignar memoria heap

El Administrador de tareas de Windows u otras herramientas como el Explorador de Procesos no siempre muestran un uso preciso de la memoria del conjunto de trabajos. En términos sencillos,El uso de memoria mostrado por el Administrador de tareas no es preciso!!!

Utiliza el comando info para consultar de la siguiente manera:

# Memoria
used_memory:2011338768
used_memory_human:1,87G
used_memory_rss:2011279992
used_memory_rss_human:1,87G
used_memory_peak:2011338768
used_memory_peak_human:1,87G
total_system_memory:0
total_system_memory_human:0B
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noevition
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



La configuración es la siguiente:

1073741824 bytes = 1G
Tras la configuración, el cliente .net de redis añade un error de caché de la siguiente manera:

El comando OOM no está permitido cuando se usa memoria > 'maxmemory'.
# POLÍTICA MAXMEMORY: cómo Redis seleccionará qué eliminar cuando maxmemory
# se ha alcanzado. Puedes elegir entre cinco comportamientos:
#
# volatile-lru -> eliminar la clave con un conjunto de expiración usando un algoritmo LRU
# allkeys-lru -> eliminar cualquier clave según el algoritmo LRU
# Volátil-aleatorio -> elimina una clave aleatoria con un conjunto de expiración
# todas las claves-aleatorias -> eliminar una tecla aleatoria, cualquier clave
# volatile-ttl -> quitar la clave con el tiempo de caducidad más cercano (TTL menor)
# Noeviction -> no expiran en absoluto, solo devolven un error en las operaciones de escritura
#
# Nota: con cualquiera de las políticas anteriores, Redis devolverá un error al escribir
# Operaciones, cuando no hay llaves adecuadas para el desalojo.
#
# En la fecha de redacción estos comandos son: set setnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# Sinter sinterstore sunión sunionstore sdiff sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sort
#
# El valor por defecto es:
#
# política de noebisalucto de maxmemory
#MAXMEMORY策略: Cuando MAXMEMORY

#到达. Puedes elegir entre cinco comportamientos:

#

#volatile LRU-> utiliza el algoritmo LRU para eliminar claves con conjuntos de caducidad

#allkeys LRU-> eliminar cualquier clave según el algoritmo LRU

#volatile aleatorio - > eliminar claves aleatorias con conjuntos caducados

#allkeys > aleatorio borrar claves aleatorias, claves arbitrarias

#volatile TTL-> Eliminar la clave con la hora de caducidad más cercana (TTL menor)

#noeviction-> no caduca en absoluto, solo devuelve errores en la operación de escritura

#

#注意: Para cualquiera de las estrategias anteriores, Redis devuelve un error al escribir

#操作, cuando no hay una llave adecuada para el desahucio.

#

#在编写之日, estos comandos son: set setnx setex append

#递增递减rpush lpushx lpushx linsert lset rpoplpush sadd

#烧结店sunion sunionstore sdiff sdiffstore zadd zincrby

#zunionstore Zinterstore Hset Hset, HMSET Hincrby Incrby Decrby

#getset mset mset, ordenación ejecutiva

#

#默认值为:

#

#maxmemory策略无效
También necesitas configurar las siguientes configuraciones:

La configuración predeterminada de redis es muy conservadora, es decir, no se almacena después de superar el límite de memoria, y la política puede cambiarse al algoritmo LRU (el menos utilizado recientemente): la información almacenada reemplazará a la antigua.

Revisión:

Diferencia de persistencia de Redis entre RDB y AOF
https://www.itsvse.com/thread-9555-1-1.html

La instalación de Docker ejecuta la caché Redis
https://www.itsvse.com/thread-8995-1-1.html

Los ejemplos explican qué son la penetración de cachés de Redis, avalancha de caché y ruptura de caché
https://www.itsvse.com/thread-8968-1-1.html

Comodines de Redis para eliminar claves en masa
https://www.itsvse.com/thread-7957-1-1.html

Instalación de CentOS 7 Tutorial de Redis 5.0.3
https://www.itsvse.com/thread-7201-1-1.html

Instala la extensión Redis bajo php 5.5.7 bajo CentOS
https://www.itsvse.com/thread-7200-1-1.html

¿Cuántas claves se pueden almacenar en una instancia de Redis y cuáles son las claves y valores máximos?
https://www.itsvse.com/thread-6848-1-1.html

El tema del chino redis no puede mostrarse correctamente
https://www.itsvse.com/thread-5032-1-1.html

Redis permite el acceso remoto
https://www.itsvse.com/thread-5011-1-1.html

Windows no logra iniciar el servicio Redis, error 1067: El proceso termina inesperadamente.
https://www.itsvse.com/thread-5010-1-1.html

CentOS instaló Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis configura contraseñas de conexión y acceso remotas
https://www.itsvse.com/thread-4101-1-1.html

Redis vacía la caché de datos
https://www.itsvse.com/thread-4027-1-1.html

Configuración de persistencia de Redis y persistencia apagada
https://www.itsvse.com/thread-4012-1-1.html

La diferencia entre guardar y guardar en redis
https://www.itsvse.com/thread-4010-1-1.html

Redis dos métodos y principios de persistencia
https://www.itsvse.com/thread-4009-1-1.html

Redis tiene tres formas de empezar
https://www.itsvse.com/thread-4008-1-1.html

Método Redis para ocultar ventanas de línea de comandos
https://www.itsvse.com/thread-2988-1-1.html

Redis Problema de hash hash de valor
https://www.itsvse.com/thread-2587-1-1.html

5 cosas que debes saber antes de usar Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis modifica el número de puerto por defecto y establece la contraseña de acceso
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit download, dirección oficial de descarga
https://www.itsvse.com/thread-2576-1-1.html

Redis utiliza scripts Lua para explicaciones detalladas
https://www.itsvse.com/thread-9634-1-1.html

Prueba de rendimiento Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

(Fin)






Anterior:Juicio NPOI sobre el tipo de fecha de la celda
Próximo:Explicación detallada de la operación de Excel NPOI
 Propietario| Publicado el 12-7-2023 21:08:55 |
Estrategias de eliminación de ocho de memoria Redis
https://www.itsvse.com/thread-10626-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com