Veo una métrica que indica que se ha superado la asignación de red en mi entorno de Amazon ElastiCache.
Descripción corta
Cuando la carga de trabajo de la aplicación supera las capacidades de red del nodo de ElastiCache subyacente, puede producirse un modelado del tráfico. Para realizar un seguimiento de la configuración del tráfico, utiliza las siguientes métricas:
- NetworkBandwidthInAllowanceExceeded y NetworkBandwidthOutAllowanceExceeded
- NetworkPacketsPerSecondAllowanceExceeded
- NetworkConntrackAllowanceExceeded
Resolución
NetworkBandwidthInAllowanceExceeded y NetworkBandwidthOutAllowanceExceeded
Las métricas NetworkBandwidthInAllowanceExceeded y NetworkBandwidthOutAllowanceExceeded registran la cantidad de paquetes de red que ElastiCache moldea cuando el rendimiento supera el límite de ancho de banda agregado.
Al revisar NetworkBandwidthInAllowanceExceeded y NetworkBandwidthOutAllowanceExceeded, también debes revisar las métricas NetworkBytesIn y NetworkBytesOut en Amazon CloudWatch. Cuando las métricas de uso del ancho de banda de CloudWatch NetworkBytesIn y NetworkBytesOut están por debajo de los límites del nodo, las métricas de rendimiento de la red pueden mostrar que ElastiCache superó una asignación. Para obtener más información, consulta Supervisión del ancho de banda de la instancia.
Nota: Las pequeñas ráfagas de tráfico pueden provocar un modelado del tráfico, incluso si el ancho de banda promedio está dentro de tus límites. Si se producen picos ocasionales en estas métricas de asignación de ancho de banda sin ningún efecto en la aplicación, no es necesario realizar ninguna otra acción. Como Valkey y Redis OSS utilizan TCP, TCP retransmite los paquetes descartados.
Si estas métricas de asignación de ancho de banda son consistentemente altas y tu aplicación detecta problemas de latencia, revisa las marcas de tiempo de los problemas de latencia. Si las marcas de tiempo de error coinciden con los tiempos de los picos de las métricas, escala verticalmente el clúster. Para obtener más información, consulta Escalamiento de clústeres de diseño propio.
Además, revisa el tipo de nodo de caché del clúster. Si la carga de trabajo de la aplicación hace que el uso de la red supere constantemente el ancho de banda de referencia, es posible que se modele el tráfico. Para obtener más información, consulta Ancho de banda de instancia disponible.
Nota: Por cada byte que ElastiCache escribe en el nodo principal, ElastiCache replica la misma información en todas las demás réplicas. Cuando el clúster intenta procesar la acumulación de replicación, los clústeres con tipos de nodos pequeños, múltiples réplicas y solicitudes de escritura intensivas pueden tener problemas. Este retraso puede provocar que se superen los valores de NetworkBandwidthOutAllowanceExceeded en los nodos principales.
Para determinar qué causó un aumento en las métricas en la aplicación, busca los comandos que funcionan con varias claves. Esto incluye los siguientes ejemplos:
Si trabajas con varias claves grandes, como objetos JSON grandes o valores hash, es posible que superes los límites de ancho de banda de tu tipo de nodo. A continuación, ElastiCache elimina el exceso de tráfico o lo agrega a una cola en función de la carga actual.
NetworkPacketsPerSecondAllowanceExceeded
Si esta métrica tiene un valor distinto de 0, el uso de la red en los nodos de caché subyacentes superó el límite de paquetes por segundo (PPS). Este límite es específico del tipo de nodo que utilices. ElastiCache descarta o pone en cola los paquetes sobrantes que superan el límite de nodos.
En el caso de las aplicaciones que generan un elevado número de consultas por segundo (QPS) de solicitudes pequeñas, el nodo puede superar los límites de PPS. Para determinar la velocidad de ejecución de comandos, utiliza las métricas de CloudWatch para cada tipo de datos de comando. Para obtener más información, consulta Métricas para Valkey y Redis OSS.
Para resolver este problema, puedes escalar verticalmente el clúster a un tipo de nodo más grande. Si las operaciones requieren mucha lectura, puedes agregar más réplicas de lectura al clúster o partición para distribuir la carga. En el caso de los clústeres con modo de clúster habilitado (CME), si las operaciones requieren mucha escritura, agrega más particiones para escalar horizontalmente el clúster.
Nota: En el caso de los clústeres con modo de clúster desactivado (CMD), debes mover el clúster a un nodo más grande para escalar las operaciones de escritura.
NetworkConntrackAllowanceExceeded
Si esta métrica tiene un valor distinto de 0, ElastiCache superó la cantidad máxima de conexiones rastreadas en todos los grupos de seguridad de los nodos. Una vez alcanzado el límite de conexiones, las conexiones nuevas fallan hasta que ElastiCache cierra las conexiones existentes. Para obtener más información, consulta Seguimiento de conexiones de grupos de seguridad de Amazon Elastic Compute Cloud (Amazon EC2).
Cuando las cargas de trabajo crean un gran número de conexiones de red y no se cierran correctamente, las conexiones permanecen abiertas en el lado del servidor. Estas conexiones permanecen inactivas y provocan el agotamiento de conntrack. Entonces, ElastiCache no puede aceptar conexiones nuevas hasta que cierre las conexiones existentes.
Para resolver este problema en ElastiCache, utiliza el parámetro timeout para revisar y modificar el tiempo de espera de la conexión inactiva. Configura el parámetro para que el servidor de ElastiCache cierre las conexiones después de un periodo de inactividad.
Para resolver este problema en la aplicación, utiliza la configuración del grupo de conexiones para reutilizar las conexiones existentes y reducir la velocidad de NewConnections. Para obtener más información, consulta Prácticas recomendadas: clientes de Redis y Amazon ElastiCache para Redis.
Nota: Tanto el parámetro timeout del servidor como la configuración del grupo de conexiones del lado del cliente administran el establecimiento de la conexión y requieren pruebas de carga desde la aplicación. Realiza una prueba de carga de la aplicación para determinar la configuración óptima tanto para el tiempo de espera como para la configuración del grupo de conexiones.
Información relacionada
Supervisión del uso con métricas de CloudWatch
Escalar ElastiCache
Red
Parámetros de Redis OSS 2.6.13
Las métricas de rendimiento de red a nivel de instancia de Amazon EC2 revelan nueva información