Saiba como definir limites para a memória usada pelas instâncias de contêiner no Knative serving.
Noções básicas sobre o uso da memória
As instâncias de contêiner do Knative serving 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.
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, a CLI do Google Cloud ou um arquivo YAML ao implantar um novo serviço ou atualizar um serviço existente e implantar uma revisão:
Console
Acesse o Knative serving no console do Google Cloud:
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.
Em Configurações avançadas, clique em Contêiner.
Selecione o tamanho de memória que você quer na lista suspensa Memória alocada.
Clique em Avançar para acessar a próxima seção.
Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.
Clique em Criar para implantar a imagem no Knative serving e aguarde até que a implantação seja concluída.
Linha de comando
Para os serviços existentes, atualize o limite de memória usando o comando
gcloud run services update
com o parâmetro--memory
:gcloud run 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
ouK
, 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 run deploy
com o parâmetro--memory
:gcloud run deploy 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/cloudrun/hello
; - 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
ouK
, 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
Faça o download da configuração de um serviço existente para um
arquivo YAML com o comando gcloud run services describe
usando a
sinalização --format=export
.
Em seguida, modifique o arquivo YAML e implante
essas alterações com o comando gcloud run services replace
.
Modifique apenas os atributos especificados.
Faça o download da configuração do serviço em um arquivo chamado
service.yaml
no espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do seu serviço do Knative serving.
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
, ouK
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.Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud run services replace service.yaml