Analisar o uso de heap de memória do operador do AlloyDB Omni no Kubernetes

Este documento descreve como é possível fazer um snapshot do heap de memória do operador AlloyDB Omni para ajudar a diagnosticar e depurar possíveis problemas de memória. Siga estas etapas para conseguir um heap de memória para análise:

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

    kubectl get deployment -n alloydb-omni-system

    A saída mostra as duas implantações no namespace alloydb-omni-system:

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

    É possível acessar o heap de memória de qualquer implantação. Para fins de demonstração, estas etapas mostram como acessar o heap de memória para a implantação de local-controller-manager.

  2. Ative a análise de memória especificando uma porta disponível para uso. Depois que o puerto é especificado, o pod é reinicializado. Para especificar uma porta disponível, use o argumento pprof-address na implantação:

    1. Abra a implantação em um editor de texto executando o seguinte comando:

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

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. Salve o arquivo de implantação. Depois de salvar o arquivo de implantação, o pod é reiniciado.

  3. Aguarde a reinicialização do pod antes de continuar para a próxima etapa.

    Para garantir 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 tem uma duração curta. Por exemplo, se a coluna STATUS for Running e o valor na coluna AGE for 50s, o pod estará em execução por 50 segundos após a reinicialização.

  4. Ative o encaminhamento de portas usando o seguinte comando:

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

    Substitua DEPLOYMENT_POD_NAME pelo nome da implantação, conforme aparece na coluna NAME da saída do comando a seguir:

    kubectl get pod -n alloydb-omni-system
  5. Em outro terminal, execute o comando a seguir para criar um arquivo com um snapshot do heap de memória da implantação:

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. Salve o arquivo heap.out e use-o para conferir o heap de memória da implantação do operador do AlloyDB Omni que você escolheu analisar.

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

    1. Abra a implantação em um editor de texto:

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

A seguir