Configurar limites de memória

Nesta página, descrevemos como definir limites de memória.

Noções básicas sobre o uso da memória

As instâncias do Cloud Run que excedem o limite de memória permitido são encerradas.

Os itens a seguir afetam a memória disponível da instância:

  • Abrir o executável do aplicativo (já que o executável precisa ser carregado na memória)
  • Alocar memória no processo do aplicativo
  • Gravar arquivos no sistema

O tamanho da imagem de contêiner implantada não afeta a memória disponível.

Definir e atualizar os limites de memória

É possível definir limites de memória em serviços e jobs do Cloud Run. Por padrão, a memória alocada para cada instância de uma revisão ou um job é de 512 MiB.

CPU mínima necessária

Ao definir um limite de memória, os seguintes limites mínimos de CPU são obrigatórios:

Memória CPU mínima necessária
Mais de 4 GiB 2
Mais de 8 GiB 4
Mais de 16 GiB 6
Mais de 24 GiB 8

Quantidade máxima de memória

A quantidade máxima de memória que você pode configurar é 32 gibibyte (32 Gi).

Memória mínima

A configuração mínima de memória depende do ambiente de execução de primeira ou segunda geração:

  • 128 MiB para a primeira geração
  • 512 MiB para a segunda geração

Para serviços do Cloud Run

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.

Para serviços do Cloud Run, é possível definir limites de memória usando o Console do Google Cloud, a linha de comando gcloud ou um arquivo YAML ao criar um novo serviço ou implantar um novo revisão:

Console

  1. Acessar o Cloud Run

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Se você estiver configurando um novo serviço, preencha a página inicial de configurações de serviço conforme desejado e clique em Contêiner, redes, segurança para expandir a página de configuração do serviço.

  4. Clique na guia Contêiner.

    imagem

    • Selecione o tamanho de memória que você quer na lista suspensa Memória.
  5. Clique em Criar ou Implantar.

Linha de comando

É possível atualizar a alocação de memória de um determinado serviço usando o comando a seguir:

gcloud run services update SERVICE --memory SIZE

Substitua SERVICE pelo nome do serviço e SIZE pelo tamanho da memória que você quer. O formato do tamanho é um número de ponto fixo ou flutuante seguido de uma unidade: G ou M correspondente a gigabyte ou megabyte, respectivamente, ou usa a potência de dois equivalentes: Gi ou Mi correspondentes a gibibyte ou mebibyte, respectivamente.

Também é possível definir limites de memória durante a implantação usando o comando:

gcloud run deploy --image IMAGE_URL --memory SIZE

Substitua:

  • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Ao usar o Artifact Registry, o URL tem o seguinte formato: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. .
  • SIZE pelos valores descritos acima.

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o atributo memory:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                memory: SIZE

    Substitua:

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Ao usar o Artifact Registry, o URL tem o seguinte formato: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • SIZE pelo tamanho de memória desejado. O formato é um número de ponto fixo ou flutuante seguido de uma unidade: G ouM correspondentes a gigabyte ou megabyte, respectivamente, ou usar a potência de dois equivalentes: Gi ouMi correspondente a gibibyte ou mebibyte, respectivamente.
    • REVISION por um novo nome de revisão ou excluí-lo (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não excede 63 caracteres
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

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_service em template.spec.containers na configuração do Terraform. Substitua 512Mi pelo limite de memória desejado do serviço.

resources {
  limits = {
    # CPU usage limit
    # https://cloud.google.com/run/docs/configuring/cpu
    cpu = "1000m" # 1 vCPU

    # Memory usage limit (per container)
    # https://cloud.google.com/run/docs/configuring/memory-limits
    memory = "512Mi"
  }
}

Para jobs do Cloud Run

Especifique um mínimo de 512 Mi para um job do Cloud Run. Para especificar memória de um job do Cloud Run:

Console

  1. Acesse o Cloud Run

  2. Se você estiver configurando um novo job, clique na guia Jobs e preencha a página inicial de configurações do job conforme quiser. Se você estiver configurando um job, clique nele e em Editar.

  3. Clique em Contêiner, variáveis e secrets, conexões e segurança para expandir a página de propriedades do job.

  4. Clique na guia Contêiner.

    imagem

    • Selecione o tamanho de memória que você quer na lista suspensa Memória.
  5. Clique em Criar ou Atualizar.

Linha de comando

  1. Para definir limites de memória ao criar um job:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --memory SIZE

    Substituir

    • JOB_NAME pelo nome do job;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest;
    • SIZE pelo tamanho de memória desejado. O formato do tamanho é um número de ponto fixo ou flutuante seguido de uma unidade: G ou M correspondente a gigabyte ou megabyte, respectivamente, ou usa a potência de dois equivalentes: Gi ou Mi correspondentes a gibibyte ou mebibyte, respectivamente.
  2. Para definir limites de memória ao atualizar um job:

    gcloud run jobs update JOB_NAME --memory SIZE

YAML

Faça o download e veja a configuração do job que já existe usando o comando gcloud run jobs describe --format export, que gera resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run jobs replace. Modifique os campos somente conforme documentado.

  1. Para visualizar e fazer o download da configuração:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Atualize o atributo memory:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                memory: SIZE

    Substitua SIZE pelo tamanho de memória desejado, especificando um mínimo de 512 Mi. O formato é um número de ponto fixo ou flutuante seguido por uma unidade, G ou M, correspondente a gigabyte ou megabyte, respectivamente, ou usar a potência de dois equivalentes, Gi ou Mi, correspondente a gibibyte ou mebibyte, respectivamente.

    Também é possível especificar mais configurações, como variáveis de ambiente ou limites de memória.

  3. Atualize a configuração do job que já existe:

    gcloud run jobs replace job.yaml

Otimizar a memória para serviços

Para um serviço do Cloud Run, é possível determinar o requisito de pico de memória para um serviço usando o seguinte: (memória permanente) + (memória por solicitação) * (simultaneidade de serviço)

Portanto:

  • se você aumentar a simultaneidade do serviço, também precisará aumentar o limite de memória para contabilizar o pico de uso;

  • se você diminuir a simultaneidade do serviço, considere reduzir o limite de memória para economizar nos custos de uso dela.

Para mais orientações sobre como minimizar o uso de memória por solicitação, leia Dicas de desenvolvimento sobre variáveis globais.

Ver configurações de limite de memória

Para ver as configurações atuais de limite de memória do serviço do Cloud Run:

Console

  1. Acesse o Cloud Run

  2. Clique no serviço de seu interesse para abrir a página Detalhes do serviço.

  3. Clique na guia Revisões.

  4. No painel de detalhes à direita, a configuração do limite de memória está listada na guia Contêiner.

Linha de comando

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localizar a configuração de limite de memória na configuração retornada.

Para ver as configurações de limite de memória atuais do seu job do Cloud Run:

Console

  1. Acessar jobs do Cloud Run

  2. Clique no job em que você tem interesse para abrir a página Detalhes do job.

  3. Clique na guia Configuração.

  4. Localize a definição do limite de memória nos detalhes da configuração.

Linha de comando

  1. Use o comando a seguir:

    gcloud run jobs describe JOB_NAME
  2. Localizar a configuração de limite de memória na configuração retornada.