Asegurarse de tener suficiente memoria para hacer una instantánea de Valkey o Redis OSS - Amazon ElastiCache

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Asegurarse de tener suficiente memoria para hacer una instantánea de Valkey o Redis OSS

Instantáneas y sincronizaciones en Valkey 7.2 y versiones posteriores, y Redis en la versión 2.8.22 y posteriores OSS

Valkey tiene soporte predeterminado para instantáneas y sincronizaciones. La versión OSS 2.8.22 de Redis introduce un proceso de guardado sencillo que permite asignar una mayor cantidad de memoria al uso de la aplicación sin tener que aumentar el uso del intercambio durante las sincronizaciones y los guardados. Para obtener más información, consulte Cómo se implementan la sincronización y la copia de seguridad.

Instantáneas y sincronizaciones de Redis anteriores a la versión 2.8.22 OSS

Cuando trabajas con ElastiCache (RedisOSS), Redis OSS invoca un comando de escritura en segundo plano en varios casos:

  • Al crear una instantánea para una copia de seguridad.

  • Al sincronizar réplicas con la instancia principal en un grupo de reproducción.

  • Al habilitar la función de adjuntar solo archivos () AOF para Redis. OSS

  • Al promocionar una réplica al nodo primario (lo que produce la sincronización del nodo primario/réplica).

Siempre que Redis OSS ejecute un proceso de escritura en segundo plano, debe tener suficiente memoria disponible para soportar la sobrecarga del proceso. Si no tiene suficiente memoria disponible, se produce un error en el proceso. Por este motivo, es importante elegir un tipo de instancia de nodo que tenga suficiente memoria al crear el clúster de OSS Redis.

Proceso de escritura en segundo plano y uso de memoria con Valkey y Redis OSS

Cada vez que se invoca un proceso de escritura en segundo plano, Valkey y Redis OSS bifurcan su proceso (recuerde que estos motores son de un solo subproceso). Una bifurcación conserva los datos en el disco en un archivo de instantáneas .rdb de RedisOSS. El resto de los servicios de la ramificación son todos operaciones de lectura y escritura. Para garantizar que la instantánea sea una point-in-time instantánea, todas las actualizaciones y adiciones de datos se escriben en un área de memoria disponible separada del área de datos.

Siempre que tenga suficiente memoria disponible para registrar todas las operaciones de escritura mientras se almacenan los datos en disco, no debería tener problemas de memoria insuficiente. Es probable que experimente problemas de memoria insuficiente si se da alguna de las siguientes condiciones:

  • Su aplicación realiza muchas operaciones de escritura, lo que requiere una gran cantidad de memoria disponible para aceptar los datos nuevos o actualizados.

  • Tiene muy poca memoria disponible en la que agregar datos nuevos o datos.

  • Dispone de un gran conjunto de datos que requiere mucho tiempo para guardar en disco, lo que exige un gran número de operaciones de escritura.

El siguiente diagrama ilustra el uso de memoria al ejecutar un proceso de escritura en segundo plano.

Imagen: Diagrama de uso de memoria durante la escritura en segundo plano.

Para obtener más información acerca del impacto en el rendimiento de hacer una copia de seguridad, consulte El impacto en el rendimiento de las copias de seguridad de los clústeres de autodiseño.

Para obtener más información sobre cómo Valkey y Redis OSS realizan las instantáneas, consulte http://valkey.io.

Para obtener más información acerca de las regiones y zonas de disponibilidad, consulte Selección de regiones y zonas de disponibilidad para ElastiCache.

Evitar el agotamiento de la memoria al ejecutar una escritura en segundo plano

Siempre que se llame a un proceso de escritura en segundo plano, como BGSAVE o BGREWRITEAOF se invoque, para evitar que el proceso falle, debe tener más memoria disponible de la que consumirán las operaciones de escritura durante el proceso. El peor de los casos es que, durante la operación de escritura en segundo plano, se actualicen todos los registros y se agreguen algunos registros nuevos a la memoria caché. Por este motivo, le recomendamos que configure 50 (50 por ciento) para OSS las versiones de Redis anteriores reserved-memory-percent a la 2.8.22 o 25 (25 por ciento) para Valkey y todas las versiones de Redis 2.8.22 y posteriores. OSS

El valor maxmemory indica la memoria disponible para sus datos y para la carga adicional operativa. Puesto que no puede modificar el parámetro reserved-memory en el grupo de parámetros predeterminado, debe crear un grupo de parámetros personalizado para el clúster. El valor predeterminado reserved-memory es 0, lo que permite OSS a Redis consumir toda la memoria máxima con datos, lo que podría dejar muy poca memoria para otros usos, como un proceso de escritura en segundo plano. Para los valores maxmemory por tipo de instancia de nodo, consulte Parámetros específicos del tipo de nodo de Redis OSS.

También puede utilizar el reserved-memory parámetro para reducir la cantidad de memoria utilizada en la caja.

Para obtener más información sobre los parámetros específicos de Valkey y Redis en, consulte. ElastiCache Parámetros de Valkey y Redis OSS

Para obtener información acerca de cómo crear y modificar grupos de parámetros, consulte Creación de un grupo ElastiCache de parámetros y Modificación de un grupo de ElastiCache parámetros.