As instâncias são as unidades de computação que o App Engine usa para dimensionar automaticamente a sua aplicação. Em qualquer altura, a sua aplicação pode estar a ser executada numa ou em várias instâncias, com os pedidos a serem distribuídos por todas elas.
As suas instâncias com escalamento manual devem ser executadas indefinidamente, mas não existe garantia de tempo de atividade, uma vez que as instâncias podem ser terminadas antecipadamente devido a falhas ou reiniciadas para atualizações. As falhas de hardware ou software que causam o encerramento antecipado ou reinícios frequentes podem ocorrer sem aviso prévio e podem demorar um tempo considerável a resolver.
Todas as instâncias flexíveis podem ser reiniciadas semanalmente se existirem atualizações disponíveis. Este horário não é garantido. Durante os reinícios, as atualizações críticas compatíveis com versões anteriores são implementadas automaticamente no sistema operativo subjacente. A imagem da sua aplicação permanece a mesma após os reinícios.
Verificação de funcionamento
O App Engine envia pedidos de verificação de estado periódicos para confirmar que uma instância está em execução e para verificar se uma instância foi iniciada na totalidade e está pronta para aceitar pedidos recebidos. Por predefinição, estas verificações de funcionamento estão ativadas e são conhecidas como verificações de funcionamento divididas. Uma instância que recebe uma verificação de estado tem de responder à verificação de estado dentro de um intervalo de tempo especificado.
Se precisar de estender o comportamento predefinido das verificações de funcionamento divididas à sua aplicação, pode personalizar o ficheiro app.yaml
para configurar dois tipos de verificações de funcionamento:
- As verificações de atividade detetam que uma instância de VM e o respetivo contentor 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 contentor.
- As verificações de prontidão detetam que uma instância de VM está pronta para aceitar pedidos recebidos. Se uma instância de VM falhar na verificação de disponibilidade, significa que a instância de VM não concluiu o arranque e não está pronta para receber pedidos. Quando a instância de VM passa na verificação de prontidão e conclui o respetivo arranque, é adicionada ao conjunto de instâncias disponíveis.
Saiba mais sobre os comportamentos de verificação do estado dividida no guia Migrar para verificações do estado divididas.
À medida que a instância passa por estas verificações de funcionamento, os registos do App Engine podem indicar que a instância se encontra num dos seguintes estados:
- Saudável. A instância recebeu os pedidos de verificação de estado e está a processar os pedidos. Um estado saudável indica que a instância tem mais de 820 MB de espaço em disco disponível e deve responder a uma verificação de estado com um código de estado HTTP de
200
. - Prejudicial. A instância recusou os pedidos de verificação de estado e não respondeu a um número especificado de pedidos de verificação de estado consecutivos. O App Engine continua a enviar pedidos de verificação de funcionamento e reinicia a instância se uma instância não saudável continuar a não responder a um número predeterminado de verificações de funcionamento consecutivas.
- Lameduck. O encerramento ou o reinício da instância está agendado.
Durante os encerramentos, a instância conclui os pedidos em curso e recusa novos
pedidos. A app devolve um código
503
para indicar que a instância não consegue processar pedidos. Antes de uma instância ser encerrada ou reiniciada, o script de encerramento tem um período limitado para ser executado e não pode ser configurado para ser mais curto ou mais longo. - App Lameduck. A instância está a preparar-se para publicar tráfego. A app devolve um código
503
para indicar que a instância não consegue processar pedidos. Quando uma instância de VM conclui o arranque e está pronta para publicar tráfego, a instância fica em bom estado e processa pedidos. Se uma instância de VM não for iniciada a tempo, o estado da instância muda para não saudável e a instância é removida.
Os comportamentos de lameduck e lameduck de apps fazem parte de um processo normal pelo qual a instância de VM passa.
Monitorização da utilização de recursos
A página Instâncias da Google Cloud consola oferece visibilidade sobre o desempenho das suas instâncias. Pode ver a utilização de memória e CPU de cada instância, o tempo de atividade, o número de pedidos e outras estatísticas. Também pode iniciar manualmente o processo de encerramento de qualquer instância.
NTP com o ambiente flexível do App Engine
O ambiente flexível do App Engine tem serviços de protocolo de tempo de rede (NTP) que usam servidores NTP da Google. No entanto, os serviços NTP no ambiente flexível não são editáveis.
Localização da instância
As instâncias são localizadas automaticamente por região geográfica de acordo com as definições do projeto.
Dimensionamento de instâncias
Enquanto uma aplicação está em execução, os pedidos recebidos são encaminhados para uma instância existente ou nova do serviço/versão adequado. Cada versão ativa tem de ter, pelo menos, uma instância em execução, e o tipo de escalabilidade de um serviço/versão controla a forma como são criadas instâncias adicionais.
Especifica o tipo de dimensionamento no app.yaml
da sua app.
Por predefinição, a sua app usa o escalamento automático, o que significa que o App Engine vai gerir o número de instâncias inativas.
- Escala automática
- A escalabilidade automática cria instâncias com base na taxa de pedidos, nas latências de resposta e noutras métricas da aplicação. Pode especificar limites para cada uma destas métricas, bem como um número mínimo de instâncias a manter em execução em todos os momentos, configurando o elemento
automatic_scaling
.
- Escala manual
- O dimensionamento manual especifica o número de instâncias que são executadas continuamente independentemente do nível de carga. Isto permite tarefas como inicializações complexas e aplicações que dependem do estado da memória ao longo do tempo.
Faça a gestão dos serviços
Consoante o tipo de escalabilidade da sua instância, pode gerir serviços e versões na Google Cloud consola ou na CLI do Google Cloud.
Pare uma versão
Cada versão no App Engine é executada numa ou mais instâncias, consoante a quantidade de tráfego que configurou para processar.
Clique no separador para ver instruções sobre como usar a ferramenta da sua escolha:
Consola
Para parar ou desativar uma versão do seu serviço:
Aceda à página Versões do App Engine na Google Cloud consola:
Selecione uma versão na tabela e clique em Parar.
gcloud
Execute o seguinte:
gcloud app versions stop --service=SERVICE VERSION
Substituição:
- SERVICE com o nome do seu serviço.
- VERSION com o nome da versão do seu serviço.
Eliminar um serviço
Cada serviço pode ser configurado para usar diferentes tempos de execução e funcionar com diferentes definições de desempenho. Não pode eliminar o serviço predefinido. A eliminação de um serviço também elimina todas as respetivas versões associadas no seu projeto.
Clique no separador para ver instruções sobre como usar a ferramenta da sua escolha:
Consola
Para eliminar um serviço:
Aceda à página Serviços do App Engine na Google Cloud consola:
Selecione um serviço na tabela e clique em Eliminar.
gcloud
Execute o seguinte:
gcloud app services delete SERVICE
Substituição:
- SERVICE com o nome do seu serviço.