Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
¿Cómo compruebo el uso de la memoria en mi clúster de diseño propio de ElastiCache para Redis e implemento las prácticas recomendadas para controlar el uso elevado de la memoria?
Quiero comprobar el uso de la memoria en mi clúster de diseño propio de Amazon ElastiCache para Redis e implementar las prácticas recomendadas para controlar el uso elevado de la memoria.
Breve descripción
Las siguientes son causas de uso elevado de la memoria en el clúster de diseño propio de ElastiCache para Redis:
- Claves añadidas recientemente: los pares clave-valor adicionales causan un aumento en el uso de la memoria. Además, los elementos adicionales en las claves que ya existen causan un aumento en el uso de la memoria. Para identificar los cambios de datos recientes en un nodo, compruebe la métrica SetTypeCmds. Para obtener más información, consulte el comando commandstats en la página INFO del sitio web de Redis.
- Aumento del uso del búfer: los clientes se conectan a Redis a través de la red. Si el cliente, que incluye los clientes Pub/Sub, no lee la caché lo suficientemente rápido, Redis guarda los datos de respuesta en el búfer de salida del cliente.Para obtener más información, consulte Redis Pub/Sub y Output buffer limits en el sitio web de Redis. Si hay un cuello de botella en el ancho de banda de la red o si el clúster se encuentra bajo una carga intensa de forma continua, es posible que se acumule el uso del búfer. Esto provoca el agotamiento de la memoria y la degradación del rendimiento. De forma predeterminada, ElastiCache para Redis no limita el crecimiento del búfer de salida y cada cliente tiene su propio búfer. Para comprobar el uso del búfer, utilice el comando client list. Para obtener más información, consulte CLIENT LIST en el sitio web de Redis.
- Gran cantidad de conexiones nuevas: una gran cantidad de conexiones nuevas puede aumentar el uso de la memoria. Todas las conexiones nuevas crean un descriptor de archivo que consume memoria y ese consumo total de memoria puede causar la expulsión de los datos o errores OOM. Para ver el número de conexiones nuevas, compruebe la métrica NewConnections.
- Uso elevado de intercambios: es normal utilizar algún tipo de intercambio en un nodo de caché cuando hay memoria libre. Sin embargo, un uso excesivo de intercambios puede causar una disminución del rendimiento. El uso elevado de intercambios se produce en un nodo que está sometido a una gran presión de memoria. Esto da como resultado una memoria con poca capacidad de liberación. Para supervisar el intercambio en el host, utilice la métrica SwapUsage.
- Elevada fragmentación de la memoria: una elevada fragmentación de la memoria indica ineficiencias en la administración de la memoria del sistema operativo. Es posible que Redis no libere memoria cuando se eliminan las claves. Para supervisar la proporción de fragmentación, utilice la métrica MemoryFragmentationRatio. Si tiene problemas de fragmentación, active el parámetro activedefrag para la desfragmentación activa de la memoria.
- Claves grandes: las claves grandes tienen un gran tamaño de datos o una gran cantidad de elementos. Las claves grandes pueden causar un uso elevado de la memoria. Para detectar claves grandes en el conjunto de datos, utilice el comando redis-cli --bigkeys o el comando redis-cli --memkeys. Para obtener más información, consulte Scanning for big keys y Scanning keys en el sitio web de Redis.
Resolución
Comprobación del uso de la memoria
Para comprobar el uso de la memoria en el clúster de diseño propio de ElastiCache para Redis, revise las siguientes métricas de Redis:
Nota: Estas métricas se publican en Amazon CloudWatch para cada nodo de un clúster.
- BytesUsedForCache: este es el número total de bytes asignados por Redis para todos los fines. Este valor se utiliza para determinar el uso de memoria de un clúster. Para recuperar esta métrica, ejecute el comando INFO en un nodo de Redis. Para obtener más información, consulte INFO en el sitio web de Redis.
- FreeableMemory: se trata de una métrica a nivel de host que muestra la cantidad de memoria libre disponible en el host. Si el uso de la memoria aumenta debido a los datos de la caché o a una sobrecarga, el valor de FreeableMemory disminuye. Una disminución del valor de FreeableMemory indica que hay poca memoria libre en el host. El intercambio puede producirse cuando el valor de FreeableMemory es demasiado bajo.
- DataBaseMemoryUsagePercentage: es el porcentaje de memoria que utiliza un nodo del clúster. Cuando esta métrica alcanza el 100 % de su umbral, Redis inicia la política de expulsión de memoria máxima de Redis. Para obtener más información, consulte Key eviction en el sitio web de Redis. Para recuperar esta métrica, ejecute el comando INFO en un nodo de Redis. Para obtener más información, consulte INFO en el sitio web de Redis.
Nota: De forma predeterminada, ElastiCache reserva el 25 % de la memoria máxima para el uso no relacionado con los datos, como la conmutación por error y la copia de seguridad. Si no se especifica suficiente memoria reservada para el uso no relacionado con datos, es posible que aumente el intercambio. Para obtener más información, consulte Managing reserved memory.
Prácticas recomendadas para controlar el uso elevado de la memoria
- Utilización de TTL en las claves: para evitar el almacenamiento de claves innecesarias y eliminar aquellas que caduquen, especifique el TTL en las claves para su caducidad. Para obtener más información, consulte TTL en el sitio web de Redis. Si tiene un número elevado de expulsiones de claves, su nodo se ejecuta con presión de memoria. Para evitar que las claves caduquen en el mismo período de tiempo, añada aleatoriedad cuando utilice el TTL.
- Utilización una política de expulsión: cuando la memoria caché se llena, Redis elimina las claves para liberar espacio según la política maxmemory-policy. La política maxmemory-policy predeterminada está establecida en volatile_lru. La práctica recomendada consiste en elegir una política de expulsión que sea adecuada para su carga de trabajo.
- Asignación de memoria reservada: para evitar problemas durante la conmutación por error o la copia de seguridad, se recomienda establecer el parámetro reserved_memory_percentage en al menos un 25 % para el uso no relacionado con los datos. Si no hay suficiente memoria reservada para realizar la conmutación por error o la copia de seguridad, se producen problemas de intercambio y rendimiento.
- Utilización de la agrupación de conexiones: la agrupación de conexiones le permite controlar un gran número de conexiones nuevas que intenta el cliente de Redis. Para obtener más información, consulte ¿Cuáles son las prácticas recomendadas para los clientes de Redis y ElastiCache para Redis?
- Configuración de un tiempo de espera de inactividad en el lado del servidor: las conexiones abiertas consumen memoria y el uso aumenta con el tiempo, independientemente de que el cliente envíe o no solicitudes a ElastiCache para Redis. Para minimizar el uso innecesario de memoria por parte de las conexiones inactivas, configure el tiempo de espera del lado del servidor mediante el grupo de parámetros para cerrar las conexiones inactivas después de un período de tiempo determinado. Para evitar el cierre anticipado de las conexiones, establezca el valor del tiempo de espera de inactividad del lado del servidor en un valor superior al tiempo de espera del lado del cliente en la biblioteca del cliente.
- Ajustar los límites de tamaño del búfer de salida: ajuste el límite del búfer de salida para controlar el uso del espacio del búfer. Los grupos de parámetros de ElastiCache para Redis incluyen parámetros que comienzan con client-output-buffer-limit para evitar un uso elevado del búfer de salida del cliente. Estos parámetros no tienen un límite sugerido. Asegúrese de comparar su carga de trabajo y elegir un valor adecuado para los límites del búfer de salida.
- Utilización de la asignación de hash: la asignación de hash ayuda con las estructuras de datos que tienen una gran cantidad de claves. Además, para reducir el consumo de memoria en comparación con las tablas hash, utilice la codificación ziplist. Para obtener más información, consulte Memory optimization en el sitio web de Redis. Nota: La asignación de hash es un comando complejo que puede causar un aumento en el uso del motor de Redis.
- Escalamiento del clúster: si ha aumentado la presión de la memoria durante una carga de trabajo esperada, escale el clúster para reducir la presión de la memoria.
- Configuración de una alarma para el uso de la memoria: para activar una alarma de uso de memoria que alcance un umbral preestablecido, utilice las alarmas de CloudWatch. Al crear una alarma de CloudWatch, utilice la métrica BytesUsedForCache o DatabaseMemoryUsagePercentage.

Contenido relevante
- preguntada hace 3 meseslg...
- preguntada hace un meslg...
- preguntada hace un meslg...
- preguntada hace 16 díaslg...
- preguntada hace 2 meseslg...
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 10 meses