Forma de garantizar que dispone de memoria suficiente para crear 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.

Forma de garantizar que dispone de memoria suficiente para crear una instantánea de Valkey o Redis OSS

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

Valkey admite de forma predeterminada instantáneas y sincronizaciones. Redis OSS 2.8.22 introduce un proceso de guardado sin ramificaciones que le permite asignar más memoria para el uso de su aplicación sin tener que aumentar el uso del espacio de intercambio durante las sincronizaciones y 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 OSS anteriores a la versión 2.8.22

Cuando trabaja con ElastiCache Redis OSS, 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 característica de archivo de solo anexado (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 disponer de memoria suficiente para los procesos adicionales. Si no tiene suficiente memoria disponible, se produce un error en el proceso. Por ello, es importante elegir un tipo de instancia de nodo que tenga suficiente memoria al crear el clúster de Redis OSS.

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

Siempre que se llame a un proceso de escritura en segundo plano, Valkey y Redis OSS ramifican su proceso (recuerde que estos motores son de un solo proceso). Una ramificación conserva sus datos en disco en un archivo de instantánea .rdb de Redis OSS. 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 acerca de cómo realizan Valkey y Redis OSS 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, para evitar que el proceso falle, debe tener más memoria disponible que la que consumirán las operaciones de escritura durante el proceso. Lo peor que podría ocurrir es que, durante la operación de escritura en segundo plano, se actualizasen todos los registros y se añadiesen algunos registros nuevos a la caché. Por ello, recomendamos que establezca reserved-memory-percent en 50 (50 %) en versiones de Redis OSS anteriores a 2.8.22, o bien en 25 (25 %) en Redis OSS 2.8.22 y versiones posteriores.

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 para reserved-memory es 0, lo que permite a Redis OSS consumir la totalidad de maxmemory con datos, lo que posiblemente deja 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 de tipos de nodos de Redis OSS.

También puede utilizar el parámetro reserved-memory para reducir la cantidad de memoria que se utiliza de forma predeterminada.

Para obtener más información sobre los parámetros específicos de Valkey y Redis, 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.