Compartir a través de


Reducción del tiempo de arranque en frío en Azure Container Apps

Cuando la aplicación de contenedores se escala a cero durante períodos de inactividad, la siguiente solicitud entrante desencadena un arranque en frío. Un arranque en frío es el proceso que consume mucho tiempo en extraer la imagen del contenedor, asignar recursos e iniciar el código de la aplicación.

Este retraso afecta a la experiencia del usuario, especialmente para las aplicaciones que requieren tiempos de respuesta rápidos. Los arranques en frío suelen ser más notables en escenarios que implican imágenes de contenedor grandes, inicialización de aplicaciones complejas o cargas de trabajo de ML/AI.

Esta guía le ayuda a mitigar los tiempos de inicio en frío en Azure Container Apps.

Optimización del tamaño de la imagen de contenedor

Las cargas de trabajo intensivas en aprendizaje automático e inteligencia artificial suelen asociarse con grandes imágenes de contenedor. Siempre que sea posible, reduzca el tamaño de estas imágenes tanto como sea posible y elimine cualquier uso de bibliotecas innecesarias.

A menudo, las imágenes transitan del entrenamiento a la fase de inferencia con solo ajustes mínimos. Asegúrese de auditar los contenedores para quitar las herramientas de desarrollo y las dependencias solo necesarias para el desarrollo de modelos a medida que prepare el contenedor para su uso de inferencia.

Evitar registros de imágenes distantes

Use registros de contenedor cerca del entorno de Container Apps. Normalmente, esto significa que quiere usar una instancia de Azure Container Registry implementada en la misma región que el entorno o un registro premium que incluya la distribución global.

Administración de descargas grandes

Use montajes de almacenamiento para mantener datos críticos cerca de la aplicación de contenedor, especialmente cuando los archivos son de gran tamaño. Por ejemplo, si la aplicación requiere un modelo de lenguaje grande, puede descargar previamente el modelo en la cuenta de almacenamiento. Al leer archivos grandes de una cuenta de almacenamiento, se evita la latencia de extraer archivos a través de Internet.

Si va a crear un montaje de almacenamiento para cargas de trabajo de IA, asegúrese de usar las opciones de montaje más adecuadas para sus necesidades.

Implementación del sondeo de estado de ejecución personalizado o inicio de escucha temprano

Azure Container Apps configura automáticamente un sondeo de actividad cuando se habilita el ingreso. Las imágenes y las aplicaciones que tardan mucho en iniciarse después de lanzar la imagen pueden provocar problemas con el contenedor. Container Apps puede detener la aplicación de inicio porque falla el sondeo de ejecución.

Para evitar que Container Apps finalice prematuramente una imagen, implemente una prueba de actividad personalizada para permitir tiempos de inicio más prolongados. Como alternativa, puede escuchar en el puerto de destino dedicado para conexiones simples en una etapa temprana del proceso de inicio para inicializar su aplicación después de que el puerto esté abierto.

Alojamiento del lado cliente

Los tiempos de inicio en frío varían en función de tu aplicación. Para reducir la percepción de este tiempo tanto como sea posible, prepare a sus clientes para tolerar el retraso.

La señalización a los usuarios de que una determinada solicitud podría tardar más tiempo e implementar reintentos es esencial. También puede fortalecer el código para evitar tiempos de espera inesperados que superen lo que la aplicación puede gestionar adecuadamente.

Instrumentación del lado de la aplicación

Para solucionar problemas de rendimiento, implemente métricas de rendimiento y registro del lado de la aplicación para cada fase del ciclo de vida de la aplicación.

Despierta proactivamente tu aplicación

Si las recomendaciones anteriores no proporcionan el rendimiento deseado, despierte la aplicación antes de cualquier uso real. Por ejemplo, puede programar una tarea a las 9:00 para activar la aplicación antes de que los empleados inicien su día laboral. Este enfoque podría eliminar los largos arranques en frío, a la vez que se permite el ahorro de costos de escala a cero siempre que la aplicación no esté en uso.