Saltar al contenido

¿Cómo puedo solucionar los problemas de tiempos de respuesta elevados en ECS?

4 minutos de lectura
0

Quiero solucionar problemas de tiempos de respuesta elevados y latencias en mis tareas de Amazon Elastic Container Service (Amazon ECS).

Resolución

Cómo comprobar las métricas de nivel de servicio de Amazon ECS

Un mayor uso de la CPU y la memoria puede provocar latencias de respuesta elevadas en las tareas de Amazon ECS. Utilice las métricas de Amazon CloudWatch para ver la utilización de la CPU y la memoria a nivel de servicio. Si ha activado Información de contenedores de CloudWatch, compruebe el uso de la CPU y la memoria a nivel de contenedor. Si no ha activado Información sobre contenedores, consulte ¿Cómo configuro Información sobre contenedores de CloudWatch para supervisar mis tareas y mi instancia de contenedor de Amazon ECS?

Si los contenedores de la aplicación deben realizar cargas de trabajo con un uso intensivo de la CPU, cámbielos a un tamaño de tarea mayor que incluya más CPU virtual (vCPU) y más memoria. O bien, active Application Auto Scaling.

Tareas de Amazon ECS en el tipo de inicio de Amazon EC2

Compruebe la utilización de la CPU y la memoria de la instancia de Amazon Elastic Cloud Compute (Amazon EC2) para las tareas de Amazon ECS que utilizan el tipo de inicio de Amazon EC2.

Utilice las métricas de CloudWatch para supervisar el rendimiento de la red de la instancia de Amazon EC2. Si el ancho de banda de la red de la instancia supera el valor de referencia de ancho de banda de la instancia disponible, use un tipo de instancia más grande con un valor de referencia de ancho de banda alto.

Utilice la métrica CPUUtilization de CloudWatch para supervisar el uso de la CPU de la instancia. Además, inicie sesión en su instancia para comprobar el uso de la memoria. Si el uso de la CPU o la memoria es alto, agregue más instancias al clúster para distribuir las tareas entre varias instancias. O bien, cambie la instancia a un tipo de instancia más grande.

Consulte los registros de la aplicación para determinar si hay una latencia de respuesta alta por parte de un servicio descendente. Es una práctica recomendada activar AWS X-Ray para solucionar problemas de latencia.

Medición de la latencia de respuesta

Si el servicio Amazon ECS está detrás de un equilibrador de carga de aplicación, utilice la métrica TargetResponseTime de CloudWatch para medir el tiempo de respuesta. Esta métrica proporciona el tiempo de respuesta promedio para las solicitudes que se envían a través del equilibrador de carga de aplicación. Si el valor es alto, es posible que se produzcan retrasos en la infraestructura o la aplicación de backend.

Para medir la latencia de respuesta directamente desde el contenedor, inicie sesión en el contenedor de la aplicación. Para las tareas de tipo de inicio de Amazon EC2, ejecute el comando exec -it container id de Docker para iniciar sesión en el contenedor. Para las tareas que utilizan el tipo de inicio de Fargate, utilice ECS exec para iniciar sesión en el contenedor.

A continuación, ejecute el siguiente comando para medir la latencia de respuesta:

curl -kso /dev/null -w "\n===============\n
| Connect: %{time_connect}\n
| App connect: %{time_appconnect}\n
| Pre-transfer: %{time_pretransfer}\n
| Time to First Byte (TTFB): %{time_starttransfer}\n
| Total: %{time_total}\n
| HTTP Code: %{http_code}\n===============\n" http://localhost:port/endpoint

Nota: Sustituya port por el puerto del contenedor y endpoint por el punto de enlace.

En el resultado del comando anterior, el campo Tiempo hasta el primer byte (TTFB) muestra el tiempo que tarda en llegar el primer byte. La salida también incluye el tiempo de procesamiento del servidor. Si el tiempo de procesamiento es alto, significa que la aplicación está tardando más en procesar la solicitud.

Información relacionada

¿Cómo soluciono los problemas de utilización elevada de la CPU en una tarea de Amazon ECS en AWS Fargate?

¿Cómo puedo supervisar el uso elevado de memoria para las tareas de Amazon ECS en Fargate?

¿Cómo calculo el uso total de la red para mis instancias de EC2 y determino qué instancia utilizó más ancho de banda dentro de un intervalo de fechas?

OFICIAL DE AWSActualizada hace 10 meses