Analise a utilização de memória heap do operador do Kubernetes do AlloyDB Omni

Selecione uma versão da documentação:

Este documento descreve como pode obter um instantâneo da memória dinâmica do operador do AlloyDB Omni para ajudar a diagnosticar e depurar potenciais problemas de memória. Use os passos seguintes para obter um conjunto de memória para análise:

  1. Determine que implementação do operador do AlloyDB Omni analisar. O operador do AlloyDB Omni inclui duas implementações, e pode analisar o heap de memória de qualquer uma delas. Para identificar as duas implementações, execute o seguinte comando:

    kubectl get deployment -n alloydb-omni-system

    O resultado mostra as duas implementações no espaço de nomes alloydb-omni-system

    • fleet-controller-manager
    • local-controller-manager

    Pode obter a memória dinâmica de qualquer uma das implementações. Para fins de demonstração, estes passos mostram como obter a memória de heap da implementação local-controller-manager.

  2. Ative a análise de memória especificando uma porta disponível para utilização. Depois de especificar a porta, o pod é reiniciado. Para especificar uma porta disponível, use o argumento pprof-address na implementação:

    1. Abra a implementação num editor de texto executando o seguinte comando:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Especifique a porta no elemento args da secção container no modelo spec:

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. Guarde o ficheiro de implementação. Depois de guardar o ficheiro de implementação, o pod é reiniciado.

  3. Aguarde que o pod seja reiniciado antes de continuar para o passo seguinte.

    Para se certificar de que o pod foi reiniciado, execute o seguinte comando:

    kubectl get pod -n alloydb-omni-system

    Verifique se o valor de saída na coluna STATUS do pod é Running e se o valor de saída na coluna AGE é uma duração curta. Por exemplo, se a coluna STATUS for Running e o valor na coluna AGE for 50s, o pod está em execução há 50 segundos após o reinício.

  4. Ative o encaminhamento de portas através do seguinte comando:

    kubectl port-forward -n alloydb-omni-system DEPLOYMENT_POD_NAME PORT:PORT

    Substitua DEPLOYMENT_POD_NAME pelo nome da sua implementação, tal como aparece na coluna NAME do resultado do seguinte comando:

    kubectl get pod -n alloydb-omni-system
  5. Num terminal diferente, execute o seguinte comando para criar um ficheiro com uma captura instantânea da memória de heap da implementação:

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. Guarde o ficheiro heap.out e use-o para ver a memória de heap da implementação do operador do AlloyDB Omni que optou por analisar.

  7. Desative a análise de memória removendo o argumento pprof-address com a porta que usou na implementação:

    1. Abra a implementação num editor de texto:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Remova a linha da porta --pprof-address=:PORT da secção container do modelo spec que adicionou anteriormente.args

O que se segue?