Por padrão, o Cloud Run otimiza para alto desempenho com uma meta de utilização de 60% para CPU e simultaneidade, e dimensiona 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 para 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. Você pode ativar o comportamento de escalonamento otimizado mantendo as metas de utilização padrão ou configurar as seguintes metas de utilização personalizadas:
- Meta de uso para escalonamento baseado em CPU
- Meta de utilização para escalonamento com base na simultaneidade
Com os controles de escalonamento, é possível otimizar custos e melhorar a previsibilidade dos seus 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 | Porcentagem máxima configurável |
|---|---|---|---|
CPU target utilization |
60% | 10% | 95% |
Concurrency target utilization |
60% | 10% | 95% |
Ativar o comportamento de escalonamento avançado
O escalonador automático do Cloud Run responde de perto aos destinos configurados, 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 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 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
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'
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.
Configurar metas personalizadas
Defina metas de utilização personalizadas para otimizar custos ou melhorar a performance das suas 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.
É possível configurar controles de escalonamento usando a CLI gcloud ou YAML ao implantar uma nova revisão.
gcloud
Atualize os valores de uso da CPU de destino e uso 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 uso 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 uso de 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 uso 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 uso de 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: 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 uso 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 uso de 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.
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 a CLI gcloud ou YAML ao 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 por CPU, desative a meta de simultaneidade executando o seguinte comando:
gcloud beta 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 beta 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: annotations: run.googleapis.com/launch-stage: BETA 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: annotations: run.googleapis.com/launch-stage: BETA 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.
Restaurar para valores padrão
Ao restaurar os valores de utilização da CPU 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 YAML ao implantar uma nova revisão.
gcloud
Restaure a meta de uso da CPU e a meta de uso da simultaneidade para os valores padrão executando o comando gcloud beta run services update.
Para restaurar a meta de utilização da CPU para o valor padrão, execute o seguinte comando:
gcloud beta 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 beta 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 beta 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: annotations: run.googleapis.com/launch-stage: BETA 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.
Ver a configuração de escalonamento
É possível conferir a configuração de escalonamento usando a CLI gcloud ou YAML.
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 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
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 analisar o gráfico de monitoramento do uso da CPU e da simultaneidade.
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 variável 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 motorista diferente tenha prioridade ou se quiser aumentar ou diminuir a escala de forma mais ou menos agressiva, ajuste a meta de utilização para esse motorista específico.
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
Diminuir 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 baixa utilização incluem:
Alta disponibilidade de serviço: seu serviço é escalonado 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 baixa contagem 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:
- Possibilidade 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 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.