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.

As instâncias com escalonamento manual são executadas indefinidamente, mas não há garantia de tempo de atividade, já que elas podem ser encerradas antecipadamente devido a falhas ou reiniciadas para as atualizações. 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 podem ser reiniciadas semanalmente se houver atualizações disponíveis. Esta programação não é garantida. 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 que 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, elas são ativadas e 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 seu aplicativo, 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 intervalos de tempo configurados ou à 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 da verificação de integridade divididos 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 que a instância está em qualquer um dos seguintes estados:

  • Íntegro A instância recebeu as solicitações de verificação de integridade e as está processando. Um status íntegro indica que a instância tem mais de 820 MB de espaço em disco disponível e precisa responder a uma verificação de integridade com um código de status HTTP 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 Google 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. Você também pode iniciar manualmente o processo de encerramento de qualquer instância.

NTP com ambiente flexível do App Engine

O ambiente flexível do App Engine tem serviços de protocolo de tempo de rede (NTP, na sigla em inglês) que usam servidores NTP do Google. No entanto, os serviços NTP no ambiente flexível não são editáveis.

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. Você especifica o tipo de escalonamento no app.yaml do app. Por padrão, o aplicativo usa o escalonamento automático, o que significa que o App Engine gerenciará o número de instâncias inativas.

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 o tempo todo, configurando o elemento automatic_scaling.
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.

Gerenciar serviços

Dependendo do tipo de escalonamento da sua instância, é possível gerenciar serviços e versões no console do Google Cloud ou na Google Cloud CLI.

Interromper uma versão

Cada versão no App Engine é executada em uma ou mais instâncias, dependendo do volume de tráfego que você configurou para processar.

Clique na guia para conferir instruções sobre como usar a ferramenta de sua preferência:

Console

Para interromper ou desativar uma versão do serviço:

  1. Acesse a página Versões do App Engine no console do Google Cloud:

    Acessar "Versões"

  2. Selecione uma versão na tabela e clique em Interromper.

gcloud

Execute o comando a seguir:

  gcloud app versions stop --service=SERVICE VERSION

Substitua:

  • SERVICE pelo nome do serviço;
  • VERSION pelo nome da versão do serviço.

Excluir um serviço

Cada serviço pode ser configurado para usar ambientes de execução diferentes e operar com diferentes configurações de desempenho. Não é possível excluir o serviço padrão. A exclusão de um serviço também exclui todas as versões associadas no projeto.

Clique na guia para conferir instruções sobre como usar a ferramenta de sua preferência:

Console

Para excluir um serviço, realize as etapas a seguir:

  1. Acesse a página Serviços do App Engine no console do Google Cloud:

    Acessar Serviços

  2. Selecione um serviço na tabela e clique em Excluir.

gcloud

Execute o comando a seguir:

  gcloud app services delete SERVICE

Substitua:

  • SERVICE pelo nome do serviço;