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. Segui questi passaggi per ottenere un heap di memoria per l'analisi:

  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 uno dei due 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 in args della sezione container nella spec del modello:

      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 viene riavviato.

  3. Attendi il riavvio del pod prima di procedere al 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 l'inoltro della porta utilizzando il comando seguente:

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

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

    kubectl get pod -n alloydb-omni-system
  5. In un terminale diverso, 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 da args della sezione container nella spec del modello che hai aggiunto in precedenza.

Passaggi successivi