Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
¿Cómo puedo solucionar los problemas de alta latencia en ElastiCache para Valkey o ElastiCache para Redis OSS?
Quiero solucionar problemas de alta latencia en mi clúster de Amazon ElastiCache para Valkey y Amazon ElastiCache para Redis OSS.
Descripción corta
A continuación se indican las causas habituales de los problemas de alta latencia en los clústeres OSS de ElastiCache para Valkey o ElastiCache para Redis:
- Comandos lentos
- Aumento de la actividad de intercambio debido al uso excesivo de memoria
- Problemas de red
- Problemas de latencia en el lado del cliente
- Sincronización de Redis
- Eventos de clúster de Amazon ElastiCache
Resolución
Comandos lentos
Como los clústeres OSS de Valkey y Redis son de un solo subproceso, ElastiCache no puede atender a los clientes hasta que se complete la solicitud actual. Esta ralentización se traduce en un aumento del tiempo total que se tarda en atender las solicitudes y causa una alta latencia.
Para supervisar la latencia promedio, puedes usar las métricas de Amazon CloudWatch para Valkey y Redis para gestionar comandos específicos. Para obtener más información, consulta Métricas para Valkey y Redis OSS.
Para recuperar una lista de comandos que el motor tarda más de 10 ms en procesar, utiliza el comando SLOWLOG GET. Puedes conectarte al nodo afectado para ejecutar el comando slowlog get 128 en valkey-cli.
Además, Elasticache calcula las operaciones habituales de Redis con una latencia de microsegundos. CloudWatch toma muestras de las métricas cada minuto e indica las métricas de latencia como un conjunto de varios comandos. Un solo comando puede provocar problemas menores, como tiempos de espera, sin que aparezcan cambios significativos en los gráficos de métricas.
Los comandos lentos que tardan mucho en completarse pueden provocar un mayor uso de la CPU en el nodo de ElastiCache. Si hay un incremento en la métrica EngineCPUUtilization, consulta ¿Por qué veo un uso elevado o creciente de la CPU en mi clúster de ElastiCache para Redis?
Los siguientes son ejemplos de comandos complejos que pueden ralentizar los clústeres de ElastiCache:
- Uso del comando KEYS en entornos de producción con grandes conjuntos de datos: El comando KEYS explora todo el espacio de claves en busca de los patrones especificados. Para obtener más información, consulta KEYS en el sitio web de Valkey.
- Scripts de Lua que tardan mucho en ejecutarse: Según la complejidad de un script o el tamaño de un conjunto de datos, los scripts de Lua pueden durar mucho tiempo y provocar problemas de latencia.
Aumento de la actividad de intercambio debido al uso excesivo de memoria
Redis intercambia las páginas de memoria cuando aumenta la presión de memoria en el clúster. Como las páginas de memoria se transfieren desde y hacia el área de intercambio, esta operación puede aumentar la latencia y provocar tiempos de espera. Los siguientes cambios en las métricas de CloudWatch indican que hay un aumento en la actividad de intercambios:
- Aumento de SwapUsage
- Valor bajo de FreeableMemory
- Valores elevados de las métricas BytesUsedForCache y DatabaseMemoryUsagePercentage
Para solucionar problemas relacionados con el aumento de la actividad de intercambio, consulta los siguientes artículos:
- ¿Cómo soluciono el aumento de la actividad de intercambio en mis instancias de ElastiCache?
- ¿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?
Problemas de red
Los problemas de red pueden provocar una alta latencia en los clústeres. En función del problema de red que tengas, completa las siguientes tareas para solucionar los problemas de alta latencia.
Latencia de red entre el cliente y el clúster de ElastiCache
Para reducir la latencia entre el cliente y el clúster de ElastiCache, puedes aislar la latencia de la red entre los nodos del cliente y del clúster. Para obtener más información, consulta ¿Cómo soluciono los problemas de rendimiento de la red entre las instancias de EC2 de Linux o Windows en una nube virtual privada (VPC) y un host local a través de la puerta de enlace de Internet?
El clúster alcanza los límites de la red
Un nodo de ElastiCache comparte los mismos límites de red que las instancias de Amazon Elastic Compute Cloud (Amazon EC2) relacionadas. Por ejemplo, los límites de red para el tipo de nodo cache.m6g.large de ElastiCache y para la instancia m6g.large de Amazon EC2 son los mismos. Para obtener más información sobre los tipos de nodos de ElastiCache compatibles y los límites de ancho de banda de red, consulta Tipos de nodos compatibles.
Para solucionar problemas relacionados con los límites de red de los nodos de ElastiCache, consulta Límites relacionados con la red.
Nota: Es recomendable supervisar el rendimiento de la red de la instancia de Amazon EC2 y comprobar la capacidad de ancho de banda, el rendimiento en paquetes por segundo (PPS) y las conexiones rastreadas.
Latencia de protocolo de enlace TCP/SSL
Cuando los clientes se conectan a los clústeres de Redis, la creación de la conexión TCP puede tardar unos milisegundos. Durante ese tiempo, la demora puede provocar una carga adicional en las operaciones de Redis y en la CPU del nodo de ElastiCache. Cuando tienes muchas conexiones nuevas, la carga puede provocar una alta latencia en la red.
Para controlar el volumen de las conexiones y reducir la latencia, puedes usar un grupo de conexiones para almacenar en caché las conexiones TCP establecidas en un grupo. Para configurar un grupo de conexiones, usa tu biblioteca cliente de Redis. O bien, puedes crear manualmente tu grupo de conexiones.
Para optimizar el grupo de conexiones, también puedes usar comandos agregados, como MSET, MGET o canalizaciones de Redis. Para obtener más información, consulta Redis pipelining en el sitio web de Redis.
Hay un gran número de conexiones en el nodo de ElastiCache
Si hay una gran cantidad de conexiones TCP en un nodo de ElastiCache, es posible que se agote el límite máximo de clientes. Cuando alcanzas este límite, aparece el mensaje "ERR: error en el número máximo de clientes alcanzados" y puedes experimentar tiempos de espera en la conexión.
Para reducir la alta latencia, se recomienda realizar un seguimiento de las métricas CurrConnections y NewConnections de CloudWatch. Puedes supervisar estas métricas para ver la cantidad de conexiones TCP que tiene tu nodo de ElastiCache. Para resolver los problemas cuando se agota el límite máximo de clientes, consulta la sección Gran cantidad de conexiones en Prácticas recomendadas: Clientes de Redis y Amazon ElastiCache para Redis.
Problemas de latencia en el lado del cliente
Si configuras los recursos del cliente con valores de tiempo de espera demasiado bajos, es posible que recibas errores de tiempo de espera. Para averiguar si los recursos del cliente causan problemas de latencia, comprueba el uso de la memoria, la CPU y la red en el lado del cliente. Si estos recursos están cerca del límite, configura los valores de tiempo de espera del lado del cliente para que tengan un valor mayor y que así el recurso pueda responder.
Si tu aplicación se ejecuta en una instancia de Amazon EC2, puedes usar las métricas de CloudWatch para identificar más problemas. Además, puedes usar una herramienta de supervisión en la instancia de Amazon EC2, como atop o un agente de CloudWatch.
Para determinar si el cliente es la causa de la alta latencia, busca los siguientes problemas:
- Comprueba si los tiempos de espera se producen con frecuencia o a una hora específica del día.
- Comprueba si los tiempos de espera se producen en un cliente específico o en varios clientes.
- Comprueba si los tiempos de espera se producen en un nodo de Valkey o Redis específico o en varios nodos.
- Comprueba si los tiempos de espera se producen en un clúster específico o en varios clústeres.
Sincronización de Redis
La sincronización de Redis se inicia en los eventos de copia de seguridad, reemplazo de nodos y escalado. Este proceso es una carga de trabajo con un uso intensivo de recursos informáticos que puede provocar latencias.
Para comprobar si una sincronización afectó al rendimiento del nodo, puedes comprobar la métrica SaveInProgress en CloudWatch.
Nota: Para minimizar los efectos en el tráfico de usuarios, se recomienda programar los eventos de sincronización fuera de las horas pico de trabajo.
Eventos de clúster de ElastiCache
Si el clúster de ElastiCache tiene un evento de clúster, es posible que experimentes una latencia alta durante el evento. Puedes usar la consola de ElastiCache para revisar los eventos durante el período de latencia. Comprueba si hay actividades en segundo plano, como eventos de reemplazo de nodos o de conmutación por error, debido a las actualizaciones de servicio y mantenimiento administradas por ElastiCache.
Si crees que los errores inesperados de hardware provocaron una alta latencia, ponte en contacto con AWS Support.
Nota: Puedes ver las notificaciones de eventos programados en el panel de AWS Health.
Ejemplo de registro de eventos:
Finished recovery for cache nodes 0001 Recovering cache nodes 0001 Failover from master node cluster_node to replica node cluster_node completed
Información relacionada
Monitoring best practices with Amazon ElastiCache for Redis using Amazon CloudWatch (Prácticas recomendadas de supervisión con Amazon ElastiCache para Redis mediante Amazon CloudWatch)

Contenido relevante
- preguntada hace 2 meseslg...
- preguntada hace 2 meseslg...
- preguntada hace un meslg...
- preguntada hace un meslg...
- preguntada hace 4 meseslg...