Configurar controles de escalonamento personalizados para serviços

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

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:

    Acessar o Cloud Run

  2. Se você estiver configurando um novo serviço, clique em Implantar contêiner para mostrar a página Criar serviço.

  3. Se você estiver configurando um serviço atual, clique nele para abrir a página Detalhes do serviço e clique na guia Escalonamento.

  4. 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 10 a 90.

    • Para configurar a meta de uso de simultaneidade, clique em Uso de solicitações simultâneas e insira um valor de 10 a 95.

    • Clique em Concluído em cada configuração de utilização.

  5. 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.1 a 0.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.1 a 0.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

  1. 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
  2. Para atualizar a meta de uso da CPU e da simultaneidade, adicione os atributos run.googleapis.com/scaling-cpu-target e run.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.1 a 0.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.
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    Por padrão, o comando gcloud run services replace usa o arquivo service.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 recurso google_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.1 a 0.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 formato LOCATION-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

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:

    Acessar o Cloud Run

  2. Clique no serviço para abrir a página Detalhes do serviço e clique na guia Escalonamento.

  3. 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.

  4. 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

  1. 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
  2. Para escalonar apenas por CPU, desative a meta de simultaneidade definindo o atributo run.googleapis.com/scaling-concurrency-target como disabled:

    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;

  3. Para escalonar apenas por simultaneidade, desative a meta de CPU definindo o atributo run.googleapis.com/scaling-cpu-target como disabled:

    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;

  4. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    Por padrão, o comando gcloud run services replace usa o arquivo service.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 recurso google_cloud_run_v2_service na configuração do Terraform:
  • Para escalonar apenas por CPU, desative a meta de simultaneidade definindo concurrency_utilization como 0:

    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.1 a 0.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 formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • Para escalonar apenas por simultaneidade, desative a meta de CPU definindo cpu_utilization como 0:

    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 formato LOCATION-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

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:

    Acessar o Cloud Run

  2. Clique no serviço para abrir a página Detalhes do serviço e clique na guia Escalonamento.

  3. 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.

  4. 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

  1. 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
  2. Para restaurar a utilização de CPU e simultaneidade aos destinos padrão, remova os atributos run.googleapis.com/scaling-cpu-target e run.googleapis.com/scaling-concurrency-target do 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;

  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    Por padrão, o comando gcloud run services replace usa o arquivo service.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 recurso google_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 formato LOCATION-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

  1. No console do Google Cloud , acesse a página Serviços do Cloud Run:

    Acessar o Cloud Run

  2. Clique no serviço para abrir o painel Detalhes do serviço.

  3. Clique na guia Dimensionamento para conferir as configurações.

gcloud

  1. Use o comando a seguir:

    gcloud run services describe SERVICE

    SERVICE pelo nome do serviço;

  2. 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:

    1. Acesse o Metrics Explorer no console do Google Cloud para revisar o gráfico de monitoramento do seu driver de escalonamento.

    2. Pesquise e selecione a métrica run.googleapis.com/scaling/recommended_instances e 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