Analyser l'utilisation de la mémoire de tas de l'opérateur Kubernetes AlloyDB Omni

Sélectionnez une version de la documentation :

Ce document explique comment obtenir un instantané du tas de mémoire de l'opérateur AlloyDB Omni pour vous aider à diagnostiquer et à déboguer les problèmes de mémoire potentiels. Pour obtenir un tas de mémoire à analyser, procédez comme suit :

  1. Déterminez quel déploiement d'opérateur AlloyDB Omni analyser. L'opérateur AlloyDB Omni inclut deux déploiements, et vous pouvez analyser le tas de mémoire pour l'un ou l'autre. Pour identifier les deux déploiements, exécutez la commande suivante :

    kubectl get deployment -n alloydb-omni-system

    Le résultat affiche les deux déploiements dans l'espace de noms alloydb-omni-system :

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

    Vous pouvez obtenir le tas de mémoire de l'un ou l'autre déploiement. À des fins de démonstration, ces étapes montrent comment obtenir le tas de mémoire pour le déploiement local-controller-manager.

  2. Activez l'analyse de la mémoire en spécifiant un port disponible à utiliser. Une fois le port spécifié, le pod redémarre. Pour spécifier un port disponible, utilisez l'argument pprof-address dans le déploiement :

    1. Ouvrez le déploiement dans un éditeur de texte en exécutant la commande suivante :

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Spécifiez le port dans le args de la section container du modèle spec :

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. Enregistrez le fichier de déploiement. Une fois le fichier de déploiement enregistré, le pod redémarre.

  3. Attendez que le pod redémarre avant de passer à l'étape suivante.

    Pour vous assurer que le pod a redémarré, exécutez la commande suivante :

    kubectl get pod -n alloydb-omni-system

    Vérifiez que la valeur de sortie dans la colonne STATUS du pod est Running et que la valeur de sortie dans sa colonne AGE est une durée courte. Par exemple, si la colonne STATUS est Running et que la valeur de la colonne AGE est 50s, cela signifie que le pod est en cours d'exécution depuis 50 secondes après le redémarrage.

  4. Activez le transfert de port à l'aide de la commande suivante :

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

    Remplacez DEPLOYMENT_POD_NAME par le nom de votre déploiement tel qu'il apparaît dans la colonne NAME du résultat de la commande suivante :

    kubectl get pod -n alloydb-omni-system
  5. Dans un autre terminal, exécutez la commande suivante pour créer un fichier avec un instantané du tas de mémoire du déploiement :

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. Enregistrez le fichier heap.out et utilisez-le pour afficher le tas de mémoire du déploiement de l'opérateur AlloyDB Omni que vous avez choisi d'analyser.

  7. Désactivez l'analyse de la mémoire en supprimant l'argument pprof-address avec le port que vous avez utilisé lors du déploiement :

    1. Ouvrez le déploiement dans un éditeur de texte :

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Supprimez la ligne du port --pprof-address=:PORT de l'élément args de la section container dans le modèle spec que vous avez ajouté précédemment.

Étapes suivantes