Optimización del tiempo de lanzamiento de tareas de Amazon ECS - Amazon Elastic Container Service

Optimización del tiempo de lanzamiento de tareas de Amazon ECS

Para acelerar el lanzamiento de tareas, tenga en cuenta las siguientes recomendaciones.

  • Almacenamiento en caché de las imágenes de los contenedores y las instancias de binpack

    Si utiliza el tipo de lanzamiento de EC2, puede configurar el comportamiento de extracción del agente de contenedores de Amazon ECS a ECS_IMAGE_PULL_BEHAVIOR: prefer-cached. La imagen se extrae de forma remota si no hay ninguna imagen en caché. De lo contrario, se usa la imagen almacenada en la caché de la instancia. La limpieza automatizada de imágenes se deshabilita para el contenedor con el fin de garantizar que no se elimine la imagen en caché. Esto reduce el tiempo de extracción de imágenes para lanzamientos posteriores. El efecto del almacenamiento en caché es aún mayor cuando hay una alta densidad de tareas en las instancias de contenedor, que se puede configurar mediante la estrategia de ubicación de binpack. El almacenamiento en caché de las imágenes de los contenedores es especialmente beneficioso para las cargas de trabajo basadas en Windows, que suelen tener imágenes de contenedores de gran tamaño (decenas de GB). Cuando utilice la estrategia de ubicación de binpack, también puede considerar la posibilidad de utilizar el enlace troncal de la interfaz de red elástica (ENI) para colocar más tareas en el modo de red awsvpc en cada instancia de contenedor. El enlace troncal de ENI aumenta la cantidad de tareas que puede ejecutar en modo awsvpc. Por ejemplo, una instancia c5.large que puede admitir la ejecución simultánea de solo dos tareas, puede ejecutar hasta diez tareas con el enlace troncal de ENI.

  • Elección de un modo de red óptimo

    Si bien hay muchos casos en los que el modo de red awsvpc es ideal, este modo de red puede aumentar de forma inherente la latencia de inicio de tareas, ya que, para cada tarea en modo awsvpc, los flujos de trabajo de Amazon ECS necesitan aprovisionar y adjuntar una ENI mediante la invocación de las API de Amazon EC2, lo que agrega una sobrecarga de varios segundos al lanzamiento de las tareas. Por el contrario, una ventaja clave del uso del modo de red awsvpc es que cada tarea tiene un grupo de seguridad para permitir o denegar el tráfico. Esto significa que tiene una mayor flexibilidad para controlar las comunicaciones entre tareas y servicios de forma más detallada. Si la velocidad de implementación es su prioridad, puede considerar usar el modo bridge para acelerar el inicio de las tareas. Para obtener más información, consulte Asignación de una interfaz de red para una tarea de Amazon ECS.

  • Haga un seguimiento del ciclo de vida de lanzamiento de las tareas para encontrar oportunidades de optimización

    A menudo es difícil saber el tiempo que tarda una aplicación en ponerse en marcha. El lanzamiento de la imagen del contenedor, la ejecución de scripts de inicio y otras configuraciones durante el inicio de la aplicación pueden llevar tiempo. Puede usar el punto de conexión de metadatos de la tarea para publicar métricas y hacer un seguimiento del tiempo de inicio de la aplicación desde ContainerStartTime hasta el momento en que la aplicación esté lista para atender el tráfico. Con estos datos, puede comprender cómo contribuye su aplicación al tiempo total de lanzamiento y encontrar áreas en las que puede reducir la sobrecarga innecesaria específica de la aplicación y optimizar las imágenes de los contenedores. Para obtener más información, consulte Optimización de la capacidad y disponibilidad de Amazon ECS.

  • Elección de un tipo de instancia óptimo (para el tipo de lanzamiento de EC2)

    La elección del tipo de instancia correcto se basa en la reserva de recursos (por ejemplo, CPU o memoria) que configure en la tarea. Por lo tanto, al dimensionar la instancia, puede calcular cuántas tareas se pueden colocar en una sola instancia. Un ejemplo sencillo de una tarea bien ubicada es alojar cuatro tareas que requieren 0,5 vCPU y 2 GB de reservas de memoria en una instancia m5.large (compatible con 2 vCPU y 8 GB de memoria). Las reservas de esta definición de tarea aprovechan al máximo los recursos de la instancia.