Speicherheap-Nutzung des AlloyDB Omni Kubernetes-Operators analysieren

In diesem Dokument wird beschrieben, wie Sie einen Snapshot des Speicher-Heaps des AlloyDB Omni-Operators abrufen können, um potenzielle Speicherprobleme zu diagnostizieren und zu beheben. So rufen Sie einen Speicher-Heap zur Analyse ab:

  1. Legen Sie fest, welche AlloyDB Omni-Operatorbereitstellung analysiert werden soll. Der AlloyDB Omni-Operator umfasst zwei Bereitstellungen und Sie können den Speicher-Heap für beide 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 Bereitstellungen im Namespace alloydb-omni-system:

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

    Sie können den Speicher-Heap jeder Bereitstellung abrufen. In diesen Schritten wird zu Demonstrationszwecken gezeigt, wie Sie den Speicher-Heap für die local-controller-manager-Bereitstellung abrufen.

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

    1. Öffnen Sie die Bereitstellung in einem Texteditor. Führen Sie dazu den folgenden Befehl aus:

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

      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 sicherzustellen, dass 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 der Wert in der Spalte STATUS beispielsweise Running und der Wert in der Spalte AGE 50s ist, läuft der Pod nach dem Neustart seit 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 Ihrer Bereitstellung, 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 Speicherheaps der Bereitstellung 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-Betriebsbereitstellung aufzurufen, die Sie analysieren möchten.

  7. Deaktivieren Sie die Speicheranalyse, indem Sie das pprof-address-Argument mit dem verwendeten Anschluss 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 „Port --pprof-address=:PORT“ aus dem args des Abschnitts container in der Vorlage spec, die Sie zuvor hinzugefügt haben.

Nächste Schritte