¿Por qué veo un uso elevado o creciente de la CPU en mi clúster de ElastiCache para Redis?
5 minutos de lectura
0
Veo un uso elevado o creciente de la CPU en mi clúster de Amazon ElastiCache para Redis. ¿Cómo puedo solucionar este problema?
Descripción corta
Hay dos métricas de CPU de Amazon CloudWatch de ElastiCache para Redis:
- EngineCPUUtilization: esta métrica informa de la utilización de la CPU del subproceso del motor de Redis. Como Redis consta de un solo subproceso, la práctica recomendada es monitorear la métrica EngineCPUUtilization para los nodos con cuatro o más vCPU.
- CPUUtilization: esta métrica muestra el porcentaje de uso de la CPU para todo el host. Para nodos más pequeños con dos vCPU o menos, utilice la métrica CPUUtilization a fin de monitorear la carga de trabajo del clúster.
Resolución
EngineCPUUtlilization alta
Las siguientes son razones comunes para que EngineCPUUtilization sea alta:
- Un comando de larga duración que consume mucho tiempo de CPU: los comandos con alta complejidad de tiempo, comokeys, hkeys, hgetall, etc., consumen más tiempo de CPU. Para obtener sugerencias de rendimiento y complejidad de tiempo para cada comando, consulte Comandos en el sitio web redis.io. Los scripts Lua (que se ejecutan mediante los comandosEVAL o EVALSHA de Redis) son una operación atómica en Redis. Todas las actividades del servidor se bloquean durante todo el tiempo de ejecución de un script Lua, lo que provoca un uso elevado de EngineCPUUtilization. Compruebe si hay comandos de larga duración o un script Lua de larga duración mediante el registro lento de Redis.
- Un número elevado de solicitudes: compruebe las estadísticas de los comandos para determinar si hay ráfagas de comandos o si la latencia está en aumento. Puede comprobar las estadísticas de los comandos mediante métricas de CloudWatch, como GetTypeCmds o HashBasedCmds. O bien, mediante el comando de Redis info commandstats. Si ve un número elevado de solicitudes debido a la carga de trabajo esperada en la aplicación, considere escalar el clúster.
- Copia de seguridad y reproducción: compruebe la métrica SaveInProgress para ver si se produce la copia de seguridad o la reproducción. Esta métrica binaria devuelve “1” cuando hay un proceso de guardado en segundo plano (con o sin bifurcación) en curso. La métrica devuelve “0” si no hay ningún proceso de guardado en segundo plano en curso. Asegúrese de tener suficiente memoria para crear una instantánea de Redis.
- Gran cantidad de NewConnections: establecer una conexión TCP es una operación costosa desde el punto de vista computacional, en especial para los clústeres habilitados para TLS. Un número elevado de solicitudes de conexión de clientes nuevos en un corto periodo podría provocar un aumento en la EngineCPUUtilization. DesdeRedis 6.2 se han implementado mejoras de rendimiento en los clústeres habilitados para TLS que utilizan tipos de nodos x86 con ocho vCPU o más en tipos de nodos Graviton2 con cuatro vCPU o más. Para obtener recomendaciones sobre cómo gestionar un gran número de conexiones, consulte Prácticas recomendadas: clientes de Redis y Amazon ElastiCache para Redis.
- Número elevado de expulsiones: Redis expulsa las claves según el parámetro maxmemory-policy. La expulsión ocurre cuando la memoria caché no tiene suficiente memoria para almacenar datos nuevos. Si el volumen de expulsión es alto, EngineCPUUtilization aumenta porque Redis está ocupado con la expulsión de las claves. El volumen de expulsiones se puede monitorear mediante las métricas de CloudWatch Expulsiones. Si la expulsión es alta, amplíe el clúster mediante un tipo de nodo más grande o escale horizontalmente al agregar más nodos.
- Número alto de recuperación: para liberar memoria, Redis hace un muestreo y, a continuación, elimina cualquier clave que haya llegado al vencimiento del tiempo de espera. Este proceso se denomina “reclamar”. Si hay un número elevado de vencimientos, EngineCPUUtilization aumenta porque Redis está ocupado con el reclamo de las claves. Puede monitorear el número de eventos de vencimiento de claves mediante las métricas de CloudWatch Reclamadas. La práctica recomendada es no hacer caducar demasiadas claves al mismo tiempo, por ejemplo, al ejecutar el comando EXPIREAT de Redis.
Para obtener más información sobre la solución de problemas de EngineCPUUtilization, consulte Solución de problemas de conexiones: uso de la CPU.
CPUUtilization alta
Las siguientes son razones comunes para una CPUUtilization:
- Alto tráfico de red o conexiones: compruebe las métricas NewConnections, NetworkBytesIn, NetworkBytesOut, NetworkPacketsIn y NetworkPacketsOut de CloudWatch.
- EngineCPUUtilization alta y E/S asíncronas que gestionan otros subprocesos: para obtener más información sobre la gestión de E/S mejorada, consulte Aumento del rendimiento de Amazon ElastiCache con instancias M5 y R5 de Amazon EC2.
- Mantenimiento administrado continuo y actualizaciones de servicio: las actualizaciones de mantenimiento y servicio necesitan capacidad de cómputo. Como resultado, es posible que observe un aumento en CPUUtilization durante estos eventos. Compruebe el periodo de mantenimiento para ver si el pico coincide con este. La práctica recomendada es establecer el periodo de mantenimiento en el momento de menor uso para minimizar el impacto. Para obtener más información, consulte la página de ayuda de actualizaciones de mantenimiento y servicio administrados de Amazon ElastiCache.
- Paginación alta y operaciones como la copia de seguridad: una memoria insuficiente en el nodo puede provocar que el kernel haga una paginación de la memoria para intercambiar. Si la paginación es excesiva, es posible que vea un aumento en la CPUUtilization. Del mismo modo, si la carga en el nodo es alta durante operaciones como la copia de seguridad o el escalado, es posible que observe un aumento en la CPUUtilization. Para obtener recomendaciones sobre métricas a fin de identificar la causa de un pico, consulte Monitoreo de las prácticas recomendadas con Amazon ElastiCache para Redis mediante Amazon CloudWatch.

OFICIAL DE AWSActualizada hace 10 meses
Contenido relevante
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 9 meses
- OFICIAL DE AWSActualizada hace 10 meses