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 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 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 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 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 l'inoltro delle porte 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 visualizzato 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 che hai utilizzato 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