¿Cómo puedo solucionar los problemas de latencia en las llamadas o solicitudes a las tareas de Amazon ECS?

4 minutos de lectura
0

Quiero solucionar los problemas de mi aplicación Amazon Elastic Container Service (Amazon ECS) que tarda en responder a las solicitudes.

Descripción corta

A continuación se indican las causas habituales de la latencia alta en las tareas de ECS:

  • Uso elevado de CPU o memoria (RAM) en las tareas.
  • Problemas con las dependencias de la aplicación que se ejecutan dentro de la aplicación.
  • Gran distancia de red entre los clientes o los destinos locales y la tarea de ECS.
  • Problemas de conectividad de red, excesos.
  • Limitación del volumen de Amazon Elastic Block Store (Amazon EBS).

Para investigar y resolver estos problemas, primero intente aislar el lugar donde se produce el retraso y, a continuación, complete los pasos de resolución.

Resolución

Para solucionar problemas de latencia alta en la tarea de ECS, siga estos pasos:

  1. Ejecute el siguiente comando para medir la respuesta del primer byte y comprobar si la resolución de DNS es lenta y puede provocar latencia:

    % curl -kso /dev/null -w "\n===============
    | DNS lookup: %{time_namelookup}
    | Connect: %{time_connect}| App connect: %{time_appconnect}
    | Pre-transfer: %{time_pretransfer}
    | Start transfer: %{time_starttransfer}
    | Total: %{time_total}
    | HTTP Code: %{http_code}\n===============\n" https://LOAD_BALANCER_DNS_NAME.com
    
    Example output:
    | DNS lookup: 0.035596
    | Connect: 0.063130
    | App connect: 0.159145
    | Pre-transfer: 0.159264
    | Start transfer: 0.190203
    | Total: 0.190722
    | HTTP Code: 200

    Nota: La salida del ejemplo anterior está en periodos de ms. Se recomienda ejecutar las pruebas iniciales desde la VPC para reducir las variables implicadas en las diferentes rutas de red.

  2. A continuación, omita el equilibrador de carga. Utilice la dirección IP de una tarea conocida en ejecución para dirigir el curl anterior. Este proceso ayuda a aislar el componente que causa la latencia.

  3. Si hay un equilibrador de carga de aplicación, compruebe las estadísticas promedio de la métrica TargetResponseTime de Amazon CloudWatch para ver si hay valores excesivos.

    Si el valor es alto, significa que tiene un problema con las tareas o, posiblemente, que la aplicación dependa de las conexiones externas. Para obtener más información, consulte ¿Cómo soluciono un aumento en la métrica TargetResponseTime para un equilibrador de carga de aplicación?

    Si hay una gran cantidad de tareas, active y revise las entradas del registro de acceso de su equilibrador de carga de aplicación para identificar las instancias de backend.

  4. Para confirmar los problemas con el equilibrador de carga de aplicación, revise los campos request_processing_time y response_processing_time de las entradas de registro para ver si hay periodos de tiempo inusualmente altos. Para obtener más información, consulte ¿Cómo puedo solucionar los problemas de latencia alta en mi equilibrador de carga de aplicación en Elastic Load Balancing? Si su curl restringe la dirección IP de la tarea directamente y recibe una respuesta lenta, consulte Información de contenedores de CloudWatch.

  5. Si el uso de la CPU y la memoria es inferior al 90 % en promedio y no hay picos, compruebe si hay dependencias en las tareas de la aplicación que puedan provocar latencia. Las dependencias incluyen llamadas a recursos externos, como buckets de Amazon Simple Storage Service (Amazon S3), bases de datos de Amazon Relational Database Service (Amazon RDS) u otros servicios web remotos.

  6. Si las llamadas externas forman parte del flujo de trabajo esperado de la aplicación, confirme con los desarrolladores de la aplicación si está realizando llamadas sincrónicas a dependencias externas. O bien, bloquee la aplicación hasta que reciba respuestas a estas llamadas. Para obtener más información, consulte Administración de llamadas asincrónicas.

  7. Si aloja instancias de contenedor de EC2, compruebe los volúmenes e interfaces de red de Amazon EBS para ver si hay señales de sobreutilización. Para obtener más información, consulte ¿Cómo soluciono los problemas de rendimiento de los volúmenes de EBS en mi instancia de EC2? Si se detectan señales de una limitación de EBS, revise y aumente las E/S por segundo aprovisionadas de EBS y el tipo de rendimiento. O bien, use otra opción, como el almacén de instancias o Elastic Fabric Adapter (EFA).

    Si detecta señales de limitación de la interfaz de red, use un tipo de instancia más grande con más ancho de banda de la red. O bien, use un tipo de instancia de red mejorada que proporcione un valor de referencia optimizado mayor. Para obtener más información, consulte ¿Por qué mi instancia de Amazon EC2 supera sus límites de red cuando la utilización media es baja?

  8. Si aloja en AWS Fargate, compruebe las métricas de la interfaz de red con un contenedor asociado de red de Amazon ECS. Tenga en cuenta que debe realizar el despliegue con una nueva definición de tarea para agregar un contenedor asociado.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un mes