Asegurarse de tener suficiente memoria para crear una instantánea de Redis OSS - Amazon ElastiCache (RedisOSS)

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 crear una instantánea de Redis OSS

Instantáneas y sincronizaciones de Redis OSS en la versión 2.8.22 y posteriores

Redis OSS 2.8.22 presenta un proceso de guardado sencillo que le permite asignar una mayor cantidad de memoria al uso de la aplicación sin incurrir en un aumento del 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 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 función de solo adjuntar 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 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

Cada vez que se invoca un proceso de escritura en segundo plano, Redis OSS bifurca su proceso (recuerde que Redis es de un solo subproceso). Una bifurcación conserva los datos en el disco en un archivo de instantáneas .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 sobre cómo Redis OSS realiza las instantáneas, consulte http://redis.io.

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

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 del OSS de Redis y se agreguen algunos registros nuevos a la memoria caché. Por este motivo, le recomendamos que configure 50 (50 por ciento) reserved-memory-percent para las versiones de Redis OSS anteriores a la 2.8.22 o 25 (25 por ciento) para las versiones 2.8.22 de Redis OSS y 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 reserved-memory es 0, lo que permite a Redis OSS 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 que Redis OSS utiliza en la caja.

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

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