Como configurar limites de memória

Saiba como definir limites para a memória usada pelas instâncias de contêiner no Cloud Run para Anthos no Google Cloud.

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

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

Os itens a seguir afetam a memória disponível da instância de 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.

Quantidade máxima de memória

A quantidade máxima de memória que é possível configurar é limitada pela configuração do cluster do GKE.

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

Você pode definir limites de memória usando o Console do Cloud, ogcloud ferramenta de linha de comando ou um arquivo YAML ao implantar um novo serviço ou atualizar um serviço existente e implantar uma revisão:

Console

  1. Acessar o Cloud Run for Anthos no Google Cloud

  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 uma nova revisão.

  3. Em Configurações avançadas, clique em Contêiner.

    imagem

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

  5. Clique em Criar ou Implantar.

Linha de comando

  • Para os serviços atuais, atualize o limite de memória executando o comando gcloud kuberun core services update com o parâmetro --memory

    gcloud kuberun core services update SERVICE --memory SIZE
    

    Substitua:

    • SERVICE pelo nome do serviço;
    • SIZE pelo tamanho de memória desejado. O formato para o tamanho é um número de ponto fixo ou flutuante seguido por uma unidade: G, M ou K, correspondente a gigabyte, megabyte ou kilobyte, respectivamente. Também é possível usar a potência de dois equivalentes: Gi, Mi, Ki, correspondente a gibibyte, mebibyte ou kibibyte, respectivamente.
  • Para novos serviços, defina o limite da memória executando o comando gcloud kuberun core services create com o parâmetro --memory:

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --memory SIZE
    

    Substitua:

    • SERVICE pelo nome do serviço;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, gcr.io/myproject/my-image:latest;
    • SIZE pelo tamanho de memória desejado. O formato para o tamanho é um número de ponto fixo ou flutuante seguido por uma unidade: G, M ou K, correspondente a gigabyte, megabyte ou kilobyte, respectivamente. Também é possível usar a potência de dois equivalentes: Gi, Mi, Ki, correspondente a gibibyte, mebibyte ou kibibyte, respectivamente.

YAML

Para usar um arquivo YAML para modificar a configuração do serviço atual, consiga uma cópia da configuração atual, modifique e salve as alterações em um arquivo local e, em seguida, implante essas alterações no serviço.

  1. Exiba como YAML e copie a configuração do serviço em um arquivo local, por exemplo, service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.

  2. No seu arquivo local, atualize o atributo memory:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
    spec:
      template:
        spec:
          containers:
          – image: IMAGE_URL
            resources:
              limits:
                memory: SIZE

    Substitua SIZE pelo tamanho de memória desejado. O formato é um número de ponto fixo ou flutuante seguido por uma unidade: G, M, ou K correspondente a gigabyte, megabyte ou kilobyte, respectivamente. Ou use a potência de dois equivalentes: Gi, Mi, Ki correspondente a gibibyte, mebibyte ou kibibyte respectivamente.

  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml