Speicherheap-Nutzung des AlloyDB Omni Kubernetes-Operators analysieren

Wählen Sie eine Dokumentationsversion aus:

In diesem Dokument wird beschrieben, wie Sie einen Snapshot des Arbeitsspeicher-Heaps des AlloyDB Omni-Operators erstellen können, um potenzielle Arbeitsspeicherprobleme zu diagnostizieren und zu debuggen. So erhalten Sie einen Memory-Heap zur Analyse:

  1. Legen Sie fest, welche AlloyDB Omni-Operatorbereitstellung analysiert werden soll. Der AlloyDB Omni-Operator umfasst zwei Bereitstellungen und Sie können den Memory-Heap für jede davon analysieren. Führen Sie den folgenden Befehl aus, um die beiden Bereitstellungen zu identifizieren:

    kubectl get deployment -n alloydb-omni-system

    Die Ausgabe zeigt die beiden Deployments im Namespace alloydb-omni-system:

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

    Sie können den Speicher-Heap für jede der beiden Bereitstellungen abrufen. Zu Demonstrationszwecken wird in diesen Schritten gezeigt, wie Sie den Speicher-Heap für die local-controller-manager-Bereitstellung abrufen.

  2. Aktivieren Sie die Arbeitsspeicheranalyse, indem Sie einen verfügbaren Port angeben. Nachdem der Port angegeben wurde, wird der Pod neu gestartet. Verwenden Sie das Argument pprof-address im Deployment, um einen verfügbaren Port anzugeben:

    1. Öffnen Sie die Bereitstellung in einem Texteditor, indem Sie den folgenden Befehl ausführen:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Geben Sie den Port im args des container-Abschnitts in der Vorlage spec an:

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. Speichern Sie die Bereitstellungsdatei. Nachdem Sie die Bereitstellungsdatei gespeichert haben, wird der Pod neu gestartet.

  3. Warten Sie, bis der Pod neu gestartet wurde, bevor Sie mit dem nächsten Schritt fortfahren.

    Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Pod neu gestartet wurde:

    kubectl get pod -n alloydb-omni-system

    Prüfen Sie, ob der Ausgabewert in der Spalte STATUS des Pods Running ist und der Ausgabewert in der Spalte AGE eine kurze Dauer hat. Wenn die Spalte STATUS beispielsweise Running ist und der Wert in der Spalte AGE 50s lautet, läuft der Pod seit dem Neustart 50 Sekunden.

  4. Aktivieren Sie die Portweiterleitung mit dem folgenden Befehl:

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

    Ersetzen Sie DEPLOYMENT_POD_NAME durch den Namen Ihres Deployments, wie er in der Spalte NAME der Ausgabe des folgenden Befehls angezeigt wird:

    kubectl get pod -n alloydb-omni-system
  5. Führen Sie in einem anderen Terminal den folgenden Befehl aus, um eine Datei mit einem Snapshot des Speicher-Heaps des Deployments zu erstellen:

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. Speichern Sie die heap.out-Datei und verwenden Sie sie, um den Speicher-Heap der AlloyDB Omni-Operatorbereitstellung anzusehen, die Sie analysieren möchten.

  7. Deaktivieren Sie die Speicheranalyse, indem Sie das Argument pprof-address mit dem verwendeten Port aus der Bereitstellung entfernen:

    1. Öffnen Sie die Bereitstellung in einem Texteditor:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Entfernen Sie die Zeile mit dem Port --pprof-address=:PORT aus dem args des Abschnitts container in der Vorlage spec, die Sie zuvor hinzugefügt haben.

Nächste Schritte