Compartilhar via


Reduzindo o tempo de inicialização a frio nos Aplicativos de Contêineres no Azure

Quando o aplicativo de contêiner é dimensionado para zero durante períodos de inatividade, a próxima solicitação de entrada dispara uma inicialização a frio. A inicialização a frio é um processo demorado de extração da sua imagem de contêiner, provisionamento de recursos e inicialização do código do aplicativo.

Esse atraso afeta a experiência do usuário, especialmente para aplicativos que exigem tempos de resposta rápidos. As inicializações a frio geralmente são mais perceptíveis em cenários que envolvem imagens de contêiner grandes, inicialização complexa do aplicativo ou cargas de trabalho de ML/IA.

Este guia ajuda você a mitigar os tempos de inicialização a frio nos Aplicativos de Contêiner do Azure.

Otimizar o tamanho da imagem do contêiner

O aprendizado de máquina e cargas de trabalho pesadas de IA geralmente são associados a imagens de contêiner grandes. Sempre que possível, reduza o tamanho dessas imagens o máximo possível e elimine qualquer uso de bibliotecas desnecessárias.

Geralmente, as imagens fazem a transição do treinamento para o uso de inferência com apenas ajustes mínimos. Certifique-se de auditar seus contêineres para remover as ferramentas de desenvolvimento e as dependências necessárias apenas para o desenvolvimento do modelo enquanto prepara o contêiner para uso de inferência.

Evite registros de imagem remotos

Use registros de contêiner próximos ao seu ambiente de Aplicações em Contêiner. Normalmente, isso significa que você deseja usar um Registro de Contêiner do Azure implantado na mesma região que seu ambiente ou um registro premium que apresenta distribuição global.

Gerenciar downloads grandes

Use montagens de armazenamento para manter dados críticos próximos ao seu aplicativo de contêiner, especialmente quando os tamanhos de arquivo são grandes. Por exemplo, se seu aplicativo exigir um modelo de idioma grande, você poderá pré-baixar o modelo para sua conta de armazenamento. Ao ler arquivos grandes de uma conta de armazenamento, você evita a latência de transferir arquivos pela internet.

Se você estiver configurando um armazenamento para cargas de trabalho de IA, certifique-se de usar as opções de montagem mais adequadas às suas necessidades.

Implementar a investigação de integridade da vida útil personalizada ou começar a ouvir antecipadamente

Os Aplicativos de Contêiner do Azure configuram automaticamente uma investigação de atividade quando a entrada está habilitada. Imagens e aplicativos demoram para iniciar após a imagem ser iniciada e podem causar problemas com o contêiner. Os Aplicativos de Contêiner podem eliminar o aplicativo inicial porque ele falha na investigação de atividade.

Para resolver a interrupção prematura dos Aplicativos de Contêiner de uma imagem, implemente uma investigação de atividade personalizada para permitir inicializações mais longas. Como alternativa, você pode escutar na porta de destino dedicada para conexões simples no início do ciclo de inicialização para inicializar seu aplicativo depois que a porta estiver aberta.

Acomodações do lado do cliente

Os tempos de inicialização a frio variam dependendo da aplicação. Para reduzir a percepção desse tempo o máximo possível, ajuste os seus clientes para acomodar o atraso.

Sinalizar aos usuários que uma determinada solicitação pode levar mais tempo e implementar novas tentativas é essencial. Você também pode tornar seu código mais robusto para evitar tempos limite inesperados que excedem o que o seu aplicativo consegue lidar de forma adequada.

Instrumentação do lado do aplicativo

Para solucionar problemas de desempenho, implemente as métricas de desempenho do lado do aplicativo e o registro em log para cada estágio do ciclo de vida do aplicativo.

Despertar seu aplicativo de forma proativa

Se as recomendações acima não fornecerem o desempenho desejado, desperte seu aplicativo antes de qualquer uso real. Por exemplo, considere configurar um trabalho às 9h para ativar o aplicativo antes que os funcionários iniciem o dia de trabalho. Essa abordagem pode eliminar longas inicializações a frio, ao mesmo tempo em que permite uma redução de custo de escala para zero sempre que o aplicativo não estiver em uso.