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

Seleziona una versione della documentazione:

Questo documento descrive come ottenere uno snapshot dell'heap di memoria dell'operatore AlloyDB Omni per diagnosticare ed eseguire il debug di 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 deployment e puoi analizzare l'heap di memoria per uno dei due. Per identificare i due deployment, esegui questo comando:

    kubectl get deployment -n alloydb-omni-system

    L'output mostra i due deployment 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 deployment local-controller-manager.

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

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

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Specifica la porta nel campo args della sezione container nel template 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 procedere con il passaggio successivo.

    Per assicurarti che il pod sia stato riavviato, esegui questo 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 breve durata. 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 tuo deployment così come appare nella colonna NAME dell'output del seguente comando:

    kubectl get pod -n alloydb-omni-system
  5. In un altro terminale, esegui questo 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 dalla sezione args di container nel template spec che hai aggiunto in precedenza.

Passaggi successivi