Por predefinição, os serviços do Cloud Run não têm um ambiente de execução especificado, o que significa que o Cloud Run seleciona o ambiente de execução com base nas funcionalidades usadas. Por isso, a menos que especifique um ambiente de execução para o seu serviço, o Cloud Run pode selecionar o ambiente de primeira ou segunda geração.
Tenha em atenção que as tarefas do Cloud Run só usam o ambiente de execução de segunda geração e que isto não pode ser alterado para tarefas.
O ambiente de execução de primeira geração apresenta tempos de início a frio rápidos e emulação da maioria, mas não de todas as chamadas do sistema operativo. Originalmente, este era o único ambiente de execução disponível para serviços no Cloud Run.
O ambiente de execução de segunda geração oferece compatibilidade total com o Linux em vez da emulação de chamadas do sistema. Este ambiente de execução oferece:
- Desempenho mais rápido da CPU
- Desempenho da rede mais rápido, especialmente na presença de perda de pacotes
- Compatibilidade total com o Linux, incluindo suporte para todas as chamadas do sistema, espaços de nomes e cgroups
- Compatibilidade com o sistema de arquivos de rede
Embora o ambiente de execução de segunda geração tenha geralmente um desempenho mais rápido sob carga sustentada, tem tempos de início a frio mais longos do que a primeira geração para a maioria dos serviços.
Como escolher um ambiente de execução
Deve usar a primeira geração se se aplicar alguma das seguintes situações:
- O seu serviço do Cloud Run tem tráfego intermitente e precisa de ser dimensionado rapidamente para muitas instâncias, ou o seu serviço é sensível aos tempos de arranque a frio.
- O seu serviço do Cloud Run tem tráfego pouco frequente que causa um aumento da escala a partir de zero frequente.
- Quiser usar menos de 512 MiB de memória. O ambiente de execução de segunda geração requer, pelo menos, 512 MiB de memória.
Deve usar a segunda geração se alguma das seguintes situações se aplicar ao seu serviço do Cloud Run:
- O seu serviço tem de usar o NFS, que só é suportado pela segunda geração.
- O seu serviço tem um tráfego relativamente estável e é tolerante a inícios a frio um pouco mais lentos.
- O seu serviço tem cargas de trabalho com utilização intensiva do CPU.
- O seu serviço pode beneficiar de um desempenho mais rápido da rede.
- O seu serviço tem de usar software que tenha problemas de execução na primeira geração devido a chamadas de sistema não implementadas.
- O seu serviço precisa da funcionalidade cgroup do Linux.
- O seu serviço usa infraestrutura de terceiros para proteger contentores.
Práticas recomendadas para usar o ambiente de execução de segunda geração
Recomendamos que o seu contentor instale um processador SIGTERM, especialmente se estiver a usar a faturação baseada em pedidos.
O processamento de SIGTERM dá ao seu contentor a oportunidade de executar quaisquer tarefas de limpeza necessárias, como o esvaziamento de registos antes de sair. Se o seu contentor não detetar o sinal SIGTERM, continua a ter 10 segundos para realizar estas tarefas. Estes 10 segundos são faturáveis.
Como verificar se o seu contentor processa SIGTERM
Para determinar se o seu contentor tem um controlador SIGTERM instalado:
Inicie o Cloud Shell. Pode encontrar a opção
Ativar Cloud Shell no cabeçalho da página de documentação em que se encontra. Pode ter de a autorizar e aguardar pelo respetivo aprovisionamento. Em alternativa, inicie uma sessão autónoma.
Execute o contentor localmente no Cloud Shell:
docker run IMAGE_URL
Substitua IMAGE_URL por uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.Abra outro separador no Cloud Shell e obtenha uma lista dos contentores em execução na sessão atual do Cloud Shell:
docker container ls
Tem de localizar o ID do contentor devolvido pelo comando.
Usando o ID do contentor, envie um sinal SIGTERM para o contentor
docker kill -s SIGTERM CONTAINER_ID
Volte ao separador onde invocou
docker run
para ver se o contentor foi terminado (parado). Se o sinal SIGTERM fez com que o contentor terminasse, o seu contentor está a processar o SIGTERM.
Como processar SIGTERM
Se o seu contentor não processar SIGTERM, a forma mais simples de adicionar um processador SIGTERM é envolver o seu serviço com tini
. Ao fazê-lo, o seu serviço é executado
como um subprocesso do tini
, que assume a função do processo de inicialização do contentor.
Consulte as instruções do Docker
para ver instruções.
Em alternativa, pode alterar a sua aplicação para processar diretamente o SIGTERM.
O que se segue?
- Para especificar um ambiente de execução para os seus serviços do Cloud Run, consulte Selecione um ambiente de execução.
- Para especificar a memória dos seus serviços do Cloud Run, consulte o artigo Limites de memória.
- Para usar o Filestore com o Cloud Run, consulte o artigo Usar o Filestore com o Cloud Run.
- Para usar o Cloud Storage FUSE com o Cloud Run, consulte o artigo Usar o Cloud Storage FUSE com o Cloud Run.