Como 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 de contêiner 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 do contêiner:

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

Como definir e atualizar os limites de memória

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.

Por padrão, a memória alocada para cada instância de contêiner de uma revisão é 512 MiB.

É necessário um mínimo de 2 vCPUs para definir um limite de memória maior que 4GiB.

É possível definir limites de memória usando o Console do Cloud, a linha de comando gcloud ou um arquivo YAML ao criar um novo serviço ou implantar uma nova 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 Avançar > Configurações avançadas para acessar a página de configuração de serviço.

  4. Clique na guia Contêiner.

    imagem

  5. Selecione o tamanho de memória que você quer na lista suspensa Memória alocada.

  6. 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;
  • SIZE pelos valores descritos acima.

YAML

É possível fazer o download e ver a configuração do serviço atual 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:
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                memory: SIZE

    Substitua:

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE pelo URL da imagem do contêiner;
    • 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.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Quantidade máxima de memória

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

Como otimizar a memória

É possível determinar o requisito de pico de memória para um serviço usando: (Memória permanente) + (Memória por solicitação) * (Simultaneidade do 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.

Como visualizar as configurações de limite de memória

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

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.