Como as instâncias são gerenciadas

Instâncias são as unidades computacionais que o App Engine usa para fazer o dimensionamento automático do aplicativo. A qualquer momento, o aplicativo pode estar em execução em uma ou várias instâncias, com solicitações espalhadas por todas elas.

Suas instâncias com escalonamento manual e básico são executadas indefinidamente, mas não há garantia de tempo de atividade. Falhas de hardware ou software que causem encerramento antecipado ou reinicializações frequentes podem ocorrer sem qualquer aviso e levar muito tempo para serem solucionadas.

Todas as instâncias flexíveis são reiniciadas semanalmente. Durante essas reinicializações, atualizações críticas e compatíveis com versões anteriores são automaticamente implementadas no sistema operacional. A imagem do aplicativo permanecerá a mesma durante as reinicializações.

Verificação de integridade

O App Engine envia solicitações periódicas de verificação de integridade para confirmar se uma instância está em execução e para verificar se uma instância foi totalmente iniciada e está pronta para aceitar solicitações recebidas. Por padrão, essas verificações de integridade são ativadas e são conhecidas como verificações de integridade divididas. Uma instância que recebe uma verificação de integridade precisa responder à verificação de integridade dentro de um intervalo de tempo especificado.

Se você precisar estender o comportamento padrão das verificações de integridade divididas para o aplicativo, você poderá personalizar o arquivo app.yaml para configurar dois tipos de verificações de integridade:

  • As verificações de atividade detectam se uma instância de VM e o contêiner dela estão em execução. Quando uma instância de VM falha na verificação de atividade, a instância é reiniciada automaticamente. As verificações de atividade podem falhar devido aos limites e aos intervalos de tempo configurados, ou devido à falha do contêiner.
  • As verificações de prontidão detectam se uma instância de VM está pronta para aceitar solicitações recebidas. Se uma instância de VM falhar na verificação de prontidão, isso significa que a instância de VM ainda não terminou a inicialização e não está pronta para receber solicitações. Quando a instância de VM for aprovada na verificação de prontidão e tiver concluído a inicialização, ela será adicionada ao pool de instâncias disponíveis.

Saiba mais sobre os comportamentos de verificações de integridade divididas no guia Como migrar para verificações de integridade divididas.

Conforme a instância passa por essas verificações de integridade, os registros do App Engine podem indicar se a instância está em algum dos seguintes estados:

  • Íntegro. A instância recebeu as solicitações de verificação de integridade e as está processando. Um aplicativo íntegro deve responder a uma verificação de integridade com um código de status HTTP de 200.
  • Não íntegro. A instância recusou as solicitações de verificação de integridade e não respondeu a um número especificado de solicitações de verificação de integridade consecutivas. O App Engine continuará enviando solicitações de verificação de integridade e reiniciará a instância se uma instância não íntegra continuar falhando ao responder a um número predeterminado de verificações de integridade consecutivas.
  • Lameduck. A instância está programada para ser encerrada ou reiniciada. Durante os desligamentos, a instância conclui as solicitações em andamento e recusa novas solicitações. O aplicativo retorna um código 503 para indicar que a instância não pode processar solicitações. Antes de uma instância ser encerrada ou reiniciada, a execução do script de desligamento precisa ser limitada e não pode ser configurada para um tempo menor ou maior.
  • App Lameduck. A instância está se preparando para veicular o tráfego. O aplicativo retorna um código 503 para indicar que a instância não consegue processar solicitações. Quando uma instância de VM tiver concluído a inicialização e estiver pronta para veicular o tráfego, ela se tornará íntegra e processará as solicitações. Se uma instância de VM não for iniciada a tempo, ela será alterada para não íntegra e será removida.

O comportamento do lameduck e do app lameduck faz parte de um processo normal pelo qual a instância de VM passa.

Como monitorar o uso de recursos

A página "Instâncias" do Console do Cloud fornece visibilidade sobre o desempenho das instâncias. Veja o uso de memória e CPU de cada instância, bem como o tempo de atividade, o número de solicitações e outras estatísticas. Também é possível iniciar manualmente o processo de encerramento de qualquer instância.

Local da instância

As instâncias são localizadas automaticamente por região geográfica, de acordo com as configurações do projeto.

Escalonamento de instâncias

Durante a execução de um aplicativo, as solicitações recebidas são encaminhadas para uma instância atual ou nova do serviço/versão apropriada. Cada versão ativa pode ter pelo menos uma instância em execução e o tipo de escalonamento de um serviço ou versão controla como as instâncias são criadas. As configurações de escalonamento são configuradas no arquivo app.yaml. Há dois tipos de escalonamento:

Escalonamento automático
O escalonamento automático cria instâncias baseadas na taxa de solicitação, nas latências de resposta e em outras métricas do aplicativo. É possível especificar limites para cada uma dessas métricas, bem como um número mínimo de instâncias para continuar em execução em todos os momentos.
Escalonamento manual
O escalonamento manual especifica o número de instâncias que são executadas continuamente, seja qual for o nível de carga. Isso permite a realização de tarefas como inicializações complexas e a execução de aplicativos que dependem do estado da memória ao longo do tempo.