Lógica de limitación controlada de servicios de Amazon ECS - Amazon Elastic Container Service

Lógica de limitación controlada de servicios de Amazon ECS

El programador de servicios de Amazon ECS incluye una lógica de protección que limita la frecuencia con la que se lanzan las tareas del servicio si no pueden iniciarse tras varios intentos. Esto ayuda a evitar el consumo innecesario de recursos y reduce los costos.

Cuando las tareas de un servicio no pasan del estado PENDING a RUNNING y, en lugar de ello, pasan directamente a STOPPED, el programador:

  • Aumenta gradualmente el tiempo entre los intentos de reinicio

  • Sigue aumentando los retrasos hasta un máximo de 27 minutos entre intentos

  • Genera un mensaje de evento de servicio para notificarle el problema

nota

El periodo máximo de retraso de 27 minutos puede cambiar en futuras actualizaciones.

Cuando se active la limitación, recibirá este mensaje de evento de servicio:

(service service-name) is unable to consistently start tasks successfully.

Características importantes de la lógica de limitación:

  • Los servicios continúan reintentándolo indefinidamente

  • La única modificación es el aumento del tiempo entre reinicios

  • No hay parámetros configurables por el usuario

Resolución de problemas de limitación

Para resolver un problema de limitación, puede hacer lo siguiente:

  • Actualice el servicio para utilizar una nueva definición de tarea, que inmediatamente devuelve el servicio a una operación normal, sin limitaciones. Para obtener más información, consulte Actualización de un servicio de Amazon ECS.

  • Aborde la causa subyacente de los errores en las tareas.

Entre las causas más comunes de los errores en las tareas que provocan la limitación se incluyen las siguientes:

importante

Los siguientes escenarios NO activan la lógica de limitación:

  • Tareas que se detienen después de alcanzar el estado RUNNING

  • Se detuvieron tareas debido a comprobaciones de estado de Elastic Load Balancing con errores

  • Tareas en las que el comando de contenedor se cierra con un código distinto de cero después de alcanzar el estado RUNNING