Ce document explique comment obtenir un instantané de la pile de mémoire de l'opérateur AlloyDB Omni pour vous aider à diagnostiquer et à déboguer d'éventuels problèmes de mémoire. Pour obtenir un tas de mémoire à des fins d'analyse, procédez comme suit:
Déterminez le déploiement de l'opérateur AlloyDB Omni à analyser. L'opérateur AlloyDB Omni inclut deux déploiements, et vous pouvez analyser la pile 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
La sortie 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
.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: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
Spécifiez le port dans le
args
de la sectioncontainer
du modèlespec
:apiVersion: apps/v1 kind: Deployment spec: ... template: ... spec: containers: - args - --pprof-address=:PORT
Enregistrez le fichier de déploiement. Une fois le fichier de déploiement enregistré, le pod redémarre.
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 de la colonne
STATUS
du pod estRunning
et que la valeur de sortie de sa colonneAGE
est une durée courte. Par exemple, si la colonneSTATUS
estRunning
et que la valeur de la colonneAGE
est50s
, le pod s'exécute depuis 50 secondes après le redémarrage.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
Dans un autre terminal, exécutez la commande suivante pour créer un fichier contenant un instantané de la pile de mémoire du déploiement:
curl http://localhost:PORT/debug/pprof/heap > heap.out
Enregistrez le fichier
heap.out
et utilisez-le pour afficher la pile de mémoire du déploiement de l'opérateur AlloyDB Omni que vous avez choisi d'analyser.Désactivez l'analyse de la mémoire en supprimant l'argument
pprof-address
avec le port que vous avez utilisé du déploiement:Ouvrez le déploiement dans un éditeur de texte:
kubectl edit -n alloydb-omni-system deploy local-controller-manager
Supprimez la ligne de port
--pprof-address=:PORT
de la sectionargs
de la sectioncontainer
du modèlespec
que vous avez ajoutée précédemment.
Étape suivante
- Exécuter et se connecter à AlloyDB Omni
- Générer et diagnostiquer des fichiers de vidage AlloyDB Omni
- En savoir plus sur la gestion automatique de la mémoire