Analizza l'utilizzo dell'heap di memoria dell'operatore Kubernetes AlloyDB Omni

Questo documento descrive come ottenere uno snapshot dell'heap di memoria dell'operatore AlloyDB Omni per diagnosticare e risolvere potenziali problemi di memoria. Per ottenere un heap di memoria da analizzare:

  1. Determina quale deployment dell'operatore AlloyDB Omni analizzare. L'operatore AlloyDB Omni include due implementazioni e puoi analizzare l'heap di memoria per entrambe. Per identificare i due deployment, esegui questo comando:

    kubectl get deployment -n alloydb-omni-system

    L'output mostra i due implementazioni nello spazio dei nomi alloydb-omni-system:

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

    Puoi ottenere l'heap di memoria di entrambi i deployment. A scopo dimostrativo, questi passaggi mostrano come ottenere l'heap di memoria per il deploymentlocal-controller-manager.

  2. Attiva l'analisi della memoria specificando una porta disponibile da utilizzare. Dopo aver specificato la porta, il pod si riavvia. Per specificare una porta disponibile, utilizza l'argomento pprof-address nel deployment:

    1. Apri il deployment in un editor di testo eseguendo il seguente comando:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Specifica la porta in args della sezione container nel modello spec:

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. Salva il file di deployment. Dopo aver salvato il file di deployment, il pod si riavvia.

  3. Attendi il riavvio del pod prima di continuare con il passaggio successivo.

    Per assicurarti che il pod sia stato riavviato, esegui il seguente comando:

    kubectl get pod -n alloydb-omni-system

    Verifica che il valore di output nella colonna STATUS del pod sia Running e che il valore di output nella colonna AGE sia una durata breve. Ad esempio, se la colonna STATUS è Running e il valore nella colonna AGE è 50s, il pod è in esecuzione da 50 secondi dopo il riavvio.

  4. Attiva il port forwarding utilizzando il seguente comando:

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

    Sostituisci DEPLOYMENT_POD_NAME con il nome del deployment come visualizzato nella colonna NAME dell'output del seguente comando:

    kubectl get pod -n alloydb-omni-system
  5. In un altro terminale, esegui il seguente comando per creare un file con uno snapshot dell'heap di memoria del deployment:

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. Salva il file heap.out e utilizzalo per visualizzare l'heap di memoria del deployment dell'operatore AlloyDB Omni che hai scelto di analizzare.

  7. Disattiva l'analisi della memoria rimuovendo l'argomento pprof-address con la porta utilizzata dal deployment:

    1. Apri il deployment in un editor di testo:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Rimuovi la riga della porta --pprof-address=:PORT da args della sezione container nel modello spec che hai aggiunto in precedenza.

Passaggi successivi