Por padrão, o Cloud Run é otimizado para alto desempenho com uma meta de utilização de 60% para CPU e simultaneidade, e escalona o número de instâncias automaticamente para processar todas as solicitações recebidas. No entanto, para alguns casos de uso, talvez você queira 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 que você tenha mais controle sobre os comportamentos de escalonamento do serviço, permitindo que você tome decisões informadas sobre o escalonamento da carga de trabalho de acordo com seus requisitos. É possível ativar o comportamento de escalonamento aprimorado mantendo as metas de utilização padrão ou configurar as seguintes metas de utilização personalizadas:
- Meta de utilização para escalonamento baseado em CPU
- Meta de utilização para escalonamento baseado em simultaneidade
Com os controles de escalonamento, é possível otimizar os custos e melhorar a previsibilidade dos serviços. Para mais informações sobre o comportamento de escalonamento automático padrão 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 limites a seguir se aplicam a metas de escalonamento personalizadas:
| Driver de escalonamento | Padrão % | Mínimo configurável % | Máximo configurável % |
|---|---|---|---|
CPU target utilization |
60% | 10% | 95% |
Concurrency target utilization |
60% | 10% | 95% |
Ativar o comportamento de escalonamento aprimorado
O escalonador automático do Cloud Run responde de perto às metas configuradas, mesmo para serviços com um número baixo de instâncias. Considere ativar esse recurso para melhorar a previsibilidade do escalonamento, mesmo que você pretenda manter as metas de utilização padrão de 60% para CPU e simultaneidade.
Para ativar, use a CLI gcloud ou o YAML ao implantar uma nova revisã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.
gcloud
Defina os valores de utilização da CPU de destino e de utilização da simultaneidade de destino de uma determinada revisão
executando o seguinte comando gcloud beta run services update:
gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \ --scaling-concurrency-target=0.6
Substitua 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
Adicione os atributos
run.googleapis.com/scaling-cpu-targeterun.googleapis.com/scaling-concurrency-target.apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: '0.6' run.googleapis.com/scaling-concurrency-target: '0.6'
Substitua SERVICE pelo nome do serviço.
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Configurar metas personalizadas
Defina metas de utilização personalizadas para otimizar os custos ou melhorar o desempenho para suas cargas de trabalho configurando metas específicas de utilização de CPU e simultaneidade dentro dos 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.
É possível configurar controles de escalonamento usando a CLI gcloud ou o YAML ao implantar uma nova revisão.
gcloud
Atualize os valores de utilização da CPU de destino e de simultaneidade de destino de uma determinada revisão
executando o comando gcloud beta run services update.
Para atualizar a utilização da CPU de destino, execute o seguinte comando:
gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET
Substitua:
SERVICE: o nome do serviço.
CPU_TARGET: a meta de utilização da CPU. 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 utilização da simultaneidade de destino, execute o seguinte comando:
gcloud beta 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 CPU de destino e a utilização da simultaneidade, execute o seguinte comando:
gcloud beta 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 utilização da CPU. Especifique um valor de 0,1 a 0,95. Só é 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 CPU de destino e a utilização da simultaneidade, adicione os atributos
run.googleapis.com/scaling-cpu-targeterun.googleapis.com/scaling-concurrency-target:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA 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 utilização da CPU. Especifique um valor de 0,1 a 0,95. Só é 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
Desativar controles de escalonamento
É possível desativar as metas de utilização da CPU ou da simultaneidade, mas não ambas. Um driver de escalonamento sempre precisa estar 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 controles de escalonamento usando a CLI gcloud ou o YAML quando você implantar uma nova revisão.
gcloud
É possível desativar a utilização da CPU de destino ou a utilização da simultaneidade de destino executando o
comando gcloud beta run services update.
Para escalonar apenas pela CPU, desative a meta de simultaneidade executando o seguinte comando:
gcloud beta run services update SERVICE --scaling-concurrency-target=disabled
Substitua SERVICE pelo nome do serviço.
Para escalonar apenas pela simultaneidade, desative a meta de CPU executando o seguinte comando:
gcloud beta run services update SERVICE --scaling-cpu-target=disabled
Substitua 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 pela CPU, desative a meta de simultaneidade definindo o atributo
run.googleapis.com/scaling-concurrency-targetcomodisabled:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-concurrency-target: disabled
Substitua SERVICE pelo nome do serviço.
Para escalonar apenas pela simultaneidade, desative a meta de CPU definindo o atributo
run.googleapis.com/scaling-cpu-targetcomodisabled:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: disabled
Substitua SERVICE pelo nome do serviço.
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Restaurar para valores padrão
Ao restaurar os valores de utilização da CPU de destino ou da simultaneidade de destino para o padrão, você desativa o recurso de controles de escalonamento. É possível restaurar os controles de escalonamento para o padrão usando a CLI gcloud ou o YAML ao implantar uma nova revisão.
gcloud
Restaure a utilização da CPU de destino e a utilização da simultaneidade de destino para os padrões
executando o comando gcloud beta run services update.
Para restaurar a utilização da CPU de destino para o valor padrão, execute o seguinte comando:
gcloud beta run services update SERVICE --scaling-cpu-target=default
Substitua SERVICE pelo nome do serviço.
Para restaurar a utilização da simultaneidade de destino para o valor padrão, execute o seguinte comando:
gcloud beta run services update SERVICE --scaling-concurrency-target=default
Substitua SERVICE pelo nome do serviço.
Para restaurar a utilização da CPU de destino e a simultaneidade de destino para os valores padrão, execute o seguinte comando:
gcloud beta run services update SERVICE --scaling-cpu-target=default \ --scaling-concurrency-target=default
Substitua 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 da CPU e da simultaneidade para as metas 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: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: # Remove the scaling target annotations to restore defaults ...
Substitua SERVICE pelo nome do serviço.
Crie ou atualize o serviço usando o seguinte comando:
gcloud run services replace service.yaml
Conferir a configuração de escalonamento
É possível conferir a configuração de escalonamento usando a CLI gcloud ou o YAML.
Console
Noconsole, acesse a página Serviços do Cloud Run: Google Cloud
Clique no serviço para abrir o painel Detalhes do serviço.
Clique na guia Revisões.
No painel de detalhes à direita, confira a configuração Métricas de escalonamento automático listada na guia Contêineres.
gcloud
Use o comando a seguir:
gcloud run services describe SERVICE
Substitua SERVICE pelo nome do serviço.
Localize o valor 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 noconsole para analisar o gráfico de monitoramento da utilização da CPU e da simultaneidade. Google Cloud
Pesquise e selecione a métrica
run.googleapis.com/scaling/recommended_instancese defina Agregação como Não agregada para conferir a métrica agrupada por driver de escalonamento.
O driver com o valor mais alto é o que controla a contagem de instâncias do 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 desse driver específico.
Ajuste as metas de forma incremental e aguarde alguns minutos entre os ajustes para observar o efeito no desempenho.
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 implementá-las em todo o serviço.
Sobre metas de baixa utilização
Diminuir a meta de utilização para o mínimo de 0,1 (10%) muda significativamente a forma como o serviço é escalonado.
Os benefícios de definir uma meta de baixa utilização incluem:
Alta disponibilidade de serviço: o serviço é escalonado muito mais cedo, mantendo um grande buffer de capacidade inativa para lidar com picos repentinos de tráfego sem atingir a latência.
Escalonamento mais rápido em contagens de instâncias baixas: os serviços são escalonados de forma mais confiável antes de atingir gargalos de alta utilização.
As desvantagens de definir metas de baixa utilização incluem:
- Possibilidade de aumento de custos: você executa mais instâncias do que o estritamente necessário para sua carga atual, o que leva a um faturamento maior.
- Decisões de escalonamento mais frequentes: em utilizações mais baixas, o Cloud Run tem uma tolerância menor e não espera tanto tempo antes de escalonar.
A seguir
- 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.