Por padrão, o Cloud Run otimiza para alto desempenho com uma meta de utilização de 60% para CPU e simultaneidade, e escalona automaticamente o número de instâncias para processar todas as solicitações recebidas. No entanto, em alguns casos de uso, talvez seja necessário configurar quais fatores de escalonamento usar, como apenas a CPU, e definir metas personalizadas de utilização.
O Cloud Run oferece controles de escalonamento para dar mais propriedade aos comportamentos de escalonamento do seu serviço, permitindo que você tome decisões fundamentadas sobre o escalonamento da sua carga de trabalho de acordo com seus requisitos. É possível configurar as seguintes metas de utilização personalizadas:
- Meta de utilização para escalonamento baseado em CPU
- Meta de uso para escalonamento com base em simultaneidade
Com os controles de escalonamento, é possível otimizar custos e melhorar a previsibilidade dos serviços. Para mais informações sobre o comportamento padrão de escalonamento automático dos serviços do Cloud Run, consulte Sobre o escalonamento automático de instâncias nos serviços do Cloud Run.
Limites de configuração
Os seguintes limites se aplicam a metas de escalonamento automático personalizadas:
| Fator de escalonamento | Padrão % | Porcentagem mínima configurável | % máximo configurável |
|---|---|---|---|
CPU target utilization |
60% | 10% | 90% |
Concurrency target utilization |
60% | 10% | 95% |
Configurar metas personalizadas
Defina metas de utilização personalizadas para otimizar os custos ou melhorar o desempenho das cargas de trabalho configurando metas específicas de utilização de CPU e simultaneidade nos limites de configuração.
Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.
Mesmo que você configure metas de simultaneidade personalizadas ou desative o escalonamento baseado em CPU, o ajuste adaptativo de simultaneidade (ACT, na sigla em inglês) permanece ativo. Para mais detalhes, consulte Sobre o escalonamento automático de instâncias.
É possível configurar controles de escalonamento usando o console Google Cloud , a CLI gcloud, o YAML ou o Terraform ao implantar uma nova revisão.
Console
No console do Google Cloud , acesse a página Serviços do Cloud Run:
Se você estiver configurando um novo serviço, clique em Implantar contêiner para mostrar a página Criar serviço.
Se você estiver configurando um serviço atual, clique nele para abrir a página Detalhes do serviço e clique na guia Escalonamento.
Localize a seção Escalonamento de serviços. Verifique se a opção Escalonamento automático está selecionada. Abra a seção Personalizar fatores de escalonamento automático para configurar as seguintes metas de utilização:
Para configurar a meta de uso da CPU, clique em Uso da CPU e insira um valor de
10a90.Para configurar a meta de uso de simultaneidade, clique em Uso de solicitações simultâneas e insira um valor de
10a95.Clique em Concluído em cada configuração de utilização.
Clique em Criar para um novo serviço. Clique em Ver diff e reimplantar e em Implantar mudanças para um serviço atual.
gcloud
Atualize os valores de utilização de CPU de destino e utilização de simultaneidade de destino de uma determinada revisão
executando o comando gcloud run services update.
Para atualizar a utilização desejada da CPU, execute o seguinte comando:
gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET
Substitua:
SERVICE: o nome do serviço.
CPU_TARGET: a meta de uso da CPU. Especifique um valor de
0.1a0.90. É possível configurar até dois dígitos após o ponto decimal.
Para atualizar a utilização da simultaneidade de destino, execute o seguinte comando:
gcloud run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET
Substitua:
SERVICE: o nome do serviço.
CONCURRENCY_TARGET: a meta de utilização da simultaneidade. Especifique um valor de "0,1" a "0,95". Só é possível configurar até dois dígitos após o ponto decimal.
Para atualizar a meta de CPU e o uso de simultaneidade, execute o seguinte comando:
gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET \ --scaling-concurrency-target=CONCURRENCY_TARGET
Substitua:
- SERVICE: o nome do serviço.
- CPU_TARGET: a meta de uso da CPU. Especifique um valor de
0.1a0.90. É possível configurar até dois dígitos após o ponto decimal. - CONCURRENCY_TARGET: a meta de utilização da simultaneidade. Especifique um valor de "0,1" a "0,95". Só é possível configurar até dois dígitos após o ponto decimal.
YAML
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:
gcloud run services describe SERVICE --format export > service.yaml
Para atualizar a meta de uso da CPU e da simultaneidade, adicione os atributos
run.googleapis.com/scaling-cpu-targeterun.googleapis.com/scaling-concurrency-target:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: 'CPU_TARGET' run.googleapis.com/scaling-concurrency-target: 'CONCURRENCY_TARGET'
Substitua:
- SERVICE: o nome do serviço.
- CPU_TARGET: a meta de uso da CPU. Especifique um valor de
0.1a0.90. É possível configurar até dois dígitos após o ponto decimal. - CONCURRENCY_TARGET: a meta de utilização da simultaneidade. Especifique um valor de "0,1" a "0,95". Só é possível configurar até dois dígitos após o ponto decimal.
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Por padrão, o comando
gcloud run services replaceusa o arquivoservice.yaml, se ele estiver presente.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na configuração do Terraform:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
scaling {
cpu_utilization = CPU_TARGET
concurrency_utilization = CONCURRENCY_TARGET
}
containers {
image = "IMAGE_URL"
}
}
}
Substitua:
- SERVICE: o nome do serviço.
- REGION: a região Google Cloud , por exemplo,
europe-west1. - CPU_TARGET: a meta de uso da CPU. Especifique um valor de
0.1a0.90. É possível configurar até dois dígitos após o ponto decimal. - CONCURRENCY_TARGET: a meta de utilização da simultaneidade. Especifique um valor de "0,1" a "0,95". Só é possível configurar até dois dígitos após o ponto decimal.
IMAGE_URL: uma referência à imagem do contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Desativar controles de escalonamento
É possível desativar as metas de utilização da CPU ou de simultaneidade, mas não ambas. Um fator de escalonamento precisa estar sempre ativo. Para desativar os controles de escalonamento, restaure os valores de utilização padrão em vez de desativá-los. Quando você desativa um driver de escalonamento, o Cloud Run ignora essa métrica ao tomar decisões de escalonamento.
É possível desativar os controles de escalonamento usando o console Google Cloud , a CLI gcloud, o YAML ou o Terraform ao implantar uma nova revisão.
Console
No console do Google Cloud , acesse a página Serviços do Cloud Run:
Clique no serviço para abrir a página Detalhes do serviço e clique na guia Escalonamento.
Localize a seção Escalonamento de serviços. Verifique se a opção Escalonamento automático está selecionada. Expanda a seção Personalizar fatores de escalonamento automático:
Para escalonar apenas por CPU, clique no ícone de exclusão ao lado de Utilização de solicitações simultâneas e insira um valor para a utilização da CPU de destino, se estiver faltando.
Para escalonar apenas por simultaneidade, clique no ícone de exclusão ao lado de Uso da CPU e insira um valor para a meta de uso da simultaneidade, se estiver faltando.
Clique em Concluído em cada configuração de utilização.
Clique em Criar para um novo serviço. Clique em Ver diff e reimplantar e em Implantar mudanças para um serviço atual.
gcloud
É possível desativar a utilização da CPU de destino ou a utilização da simultaneidade de destino executando o comando gcloud run services update.
Para escalonar apenas por CPU, desative a meta de simultaneidade executando o seguinte comando:
gcloud run services update SERVICE --scaling-concurrency-target=disabled
SERVICE pelo nome do serviço;
Para escalonar apenas por simultaneidade, desative a meta de CPU executando o seguinte comando:
gcloud run services update SERVICE --scaling-cpu-target=disabled
SERVICE pelo nome do serviço;
YAML
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:
gcloud run services describe SERVICE --format export > service.yaml
Para escalonar apenas por CPU, desative a meta de simultaneidade definindo o atributo
run.googleapis.com/scaling-concurrency-targetcomodisabled:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-concurrency-target: disabled
SERVICE pelo nome do serviço;
Para escalonar apenas por simultaneidade, desative a meta de CPU definindo o atributo
run.googleapis.com/scaling-cpu-targetcomodisabled:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: disabled
SERVICE pelo nome do serviço;
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Por padrão, o comando
gcloud run services replaceusa o arquivoservice.yaml, se ele estiver presente.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na configuração do Terraform:Para escalonar apenas por CPU, desative a meta de simultaneidade definindo
concurrency_utilizationcomo0:resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" template { scaling { cpu_utilization = CPU_TARGET concurrency_utilization = 0 } containers { image = "IMAGE_URL" } } }Substitua:
- SERVICE: o nome do serviço.
- REGION: a região Google Cloud , por exemplo,
europe-west1. - CPU_TARGET: a meta de uso da CPU. Especifique um valor de
0.1a0.90. É possível configurar até dois dígitos após o ponto decimal. IMAGE_URL: uma referência à imagem do contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Para escalonar apenas por simultaneidade, desative a meta de CPU definindo
cpu_utilizationcomo0:resource "google_cloud_run_v2_service" "default" { name = "SERVICE" location = "REGION" template { scaling { cpu_utilization = 0 concurrency_utilization = CONCURRENCY_TARGET } containers { image = "IMAGE_URL" } } }Substitua:
- SERVICE: o nome do serviço.
- REGION: a região Google Cloud , por exemplo,
europe-west1. - CONCURRENCY_TARGET: a meta de utilização da simultaneidade. Especifique um valor de "0,1" a "0,95". Só é possível configurar até dois dígitos após o ponto decimal.
IMAGE_URL: uma referência à imagem do contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Restaurar para valores padrão
Quando você restaura os valores de utilização da CPU ou da simultaneidade de destino para o padrão, o Cloud Run usa a meta de utilização padrão de 60% em vez das metas personalizadas. É possível restaurar os controles de escalonamento para o padrão usando o console Google Cloud , a CLI gcloud, o YAML ou o Terraform ao implantar uma nova revisão.
Console
No console do Google Cloud , acesse a página Serviços do Cloud Run:
Clique no serviço para abrir a página Detalhes do serviço e clique na guia Escalonamento.
Localize a seção Escalonamento de serviços. Verifique se a opção Escalonamento automático está selecionada. Abra a seção Personalizar fatores de escalonamento automático para configurar as seguintes metas de utilização:
Se as metas de uso da CPU e uso de solicitações simultâneas foram removidas, clique em Adicionar um indicador para adicionar cada uma de volta.
Defina os valores de Utilização da CPU e Utilização de solicitações simultâneas como
60.Clique em Concluído em cada configuração de utilização.
Clique em Criar para um novo serviço. Clique em Ver diff e reimplantar e em Implantar mudanças para um serviço atual.
gcloud
Restaure a meta de uso da CPU e a meta de uso da simultaneidade para os valores padrão executando o comando gcloud run services update.
Para restaurar a utilização da CPU de destino para o valor padrão, execute o seguinte comando:
gcloud run services update SERVICE --scaling-cpu-target=default
SERVICE pelo nome do serviço;
Para restaurar a utilização da simultaneidade de destino para o valor padrão, execute o comando a seguir:
gcloud run services update SERVICE --scaling-concurrency-target=default
SERVICE pelo nome do serviço;
Para restaurar a meta de uso da CPU e a meta de simultaneidade aos valores padrão, execute o seguinte comando:
gcloud run services update SERVICE --scaling-cpu-target=default \ --scaling-concurrency-target=default
SERVICE pelo nome do serviço;
YAML
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:
gcloud run services describe SERVICE --format export > service.yaml
Para restaurar a utilização de CPU e simultaneidade aos destinos padrão, remova os atributos
run.googleapis.com/scaling-cpu-targeterun.googleapis.com/scaling-concurrency-targetdo arquivo YAML:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: # Remove the scaling target annotations to restore defaults ...
SERVICE pelo nome do serviço;
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Por padrão, o comando
gcloud run services replaceusa o arquivoservice.yaml, se ele estiver presente.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na configuração do Terraform:Para restaurar a utilização da CPU e da simultaneidade para as metas padrão, remova os atributos cpu_utilization e concurrency_utilization do bloco scaling na configuração do Terraform:
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
scaling {
# Remove the scaling target attributes to restore defaults
}
containers {
image = "IMAGE_URL"
}
}
}
Substitua:
- SERVICE: o nome do serviço.
- REGION: a região Google Cloud , por exemplo,
europe-west1. IMAGE_URL: uma referência à imagem do contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
Ver a configuração de escalonamento
É possível conferir sua configuração de escalonamento usando o console do Google Cloud ou a CLI gcloud.
Console
No console do Google Cloud , acesse a página Serviços do Cloud Run:
Clique no serviço para abrir o painel Detalhes do serviço.
Clique na guia Dimensionamento para conferir as configurações.
gcloud
Use o comando a seguir:
gcloud run services describe SERVICE
SERVICE pelo nome do serviço;
Localize os valores das configurações Utilização da CPU de destino e Utilização da simultaneidade de destino na configuração retornada.
Práticas recomendadas
É possível otimizar os custos e evitar o escalonamento excessivo diminuindo o número de instâncias ou melhorar o desempenho escalonando de forma mais agressiva em resposta a drivers específicos. Para determinar as metas de utilização ideais para sua carga de trabalho, use as seguintes estratégias:
Antes de ajustar as metas, identifique qual métrica está acionando o escalonamento do serviço. Siga estas etapas para identificar a métrica de escalonamento:
Acesse o Metrics Explorer no console do Google Cloud para revisar o gráfico de monitoramento do seu driver de escalonamento.
Pesquise e selecione a métrica
run.googleapis.com/scaling/recommended_instancese defina Agregação como Não agregado para ver a métrica agrupada por acionador de escalonamento.
O driver com o valor mais alto é o que controla a contagem de instâncias do seu serviço. Se você quiser que um driver diferente tenha prioridade ou se quiser escalonar de forma mais ou menos agressiva, ajuste a meta de utilização para esse driver específico.
Se o ajuste adaptativo de simultaneidade (ACT, na sigla em inglês) for o driver de escalonamento, isso indica que a utilização da CPU de um segundo está excedendo 90% para instâncias individuais, e o Cloud Run está limitando dinamicamente a simultaneidade de solicitações para proteger seu serviço. Para reduzir o impacto do ACT no seu escalonamento, aumente a alocação de CPU ou ajuste as configurações de simultaneidade. Para mais informações, consulte Sobre o escalonamento automático de instâncias.
Ajuste as metas de forma incremental e aguarde alguns minutos entre os ajustes para observar o efeito na performance.
Use a divisão de tráfego para testar novas metas de escalonamento direcionando uma pequena porcentagem do tráfego para uma revisão separada antes de lançá-las para todo o serviço.
Sobre metas de baixa utilização
Reduzir a meta de utilização para o mínimo de 0.1 (10%) muda significativamente a forma como seu serviço é escalonado.
Os benefícios de definir uma meta de utilização baixa incluem:
Alta disponibilidade de serviço: seu serviço é escalonado verticalmente muito antes, mantendo um grande buffer de capacidade ociosa para lidar com picos repentinos de tráfego sem afetar a latência.
Escalonamento mais rápido com contagens baixas de instâncias: os serviços são escalonados de maneira mais confiável antes de atingir gargalos de alta utilização.
As desvantagens de definir metas de utilização baixas incluem:
- Potencial de aumento de custos: você executa mais instâncias do que o estritamente necessário para sua carga atual, o que resulta em um faturamento maior.
- Decisões de escalonamento mais frequentes: em utilizações menores, o Cloud Run tem uma tolerância menor e não espera tanto tempo antes de escalonar.
A seguir
- Para saber mais sobre conceitos e comportamentos de escalonamento automático, consulte Sobre o escalonamento automático de instâncias nos serviços do Cloud Run.
- Para saber mais sobre outras opções de escalonamento, consulte escalonamento manual.
- Para gerenciar o número máximo de instâncias dos serviços do Cloud Run, consulte Como configurar um número máximo de instâncias.
- Para gerenciar o número máximo de solicitações simultâneas processadas por cada instância, consulte Como configurar a simultaneidade.
- Para otimizar sua configuração de simultaneidade, consulte as dicas de desenvolvimento para ajustar a simultaneidade.
- Para especificar que uma instância inativa continue em execução para minimizar a latência ou inicializações a frio nas primeiras solicitações, consulte Como usar
min-instancepara ativar instâncias inativas.