このドキュメントでは、AlloyDB Omni Operator のメモリヒープのスナップショットを取得して、潜在的なメモリの問題を診断し、デバッグする方法について説明します。分析用のメモリヒープを取得する手順は次のとおりです。
分析する AlloyDB Omni Operator Deployment を決めます。AlloyDB Omni Operator には 2 つの Deployment があり、どちらのメモリヒープでも分析できます。2 つの Deployment を特定するには、次のコマンドを実行します。
kubectl get deployment -n alloydb-omni-system
出力には、
alloydb-omni-system
Namespace 内の 2 つの Deployment が表示されます。fleet-controller-manager
local-controller-manager
どちらの Deployment でもメモリヒープを取得できます。デモとして、ここでは
local-controller-manager
Deployment のメモリヒープを取得する手順を示します。使用可能なポートを指定して、メモリ分析を有効にします。ポートを指定すると、Pod が再起動します。使用可能なポートを指定するには、Deployment で
pprof-address
引数を使用します。次のコマンドを実行して、Deployment をテキスト エディタで開きます。
kubectl edit -n alloydb-omni-system deploy local-controller-manager
テンプレート
spec
のcontainer
セクションのargs
にポートを指定します。apiVersion: apps/v1 kind: Deployment spec: ... template: ... spec: containers: - args - --pprof-address=:PORT
Deployment ファイルを保存します。Deployment ファイルを保存すると、Pod が再起動します。
Pod の再起動が完了したら、次のステップに進みます。
Pod が再起動したことを確認するには、次のコマンドを実行します。
kubectl get pod -n alloydb-omni-system
Pod の
STATUS
列の出力値がRunning
であり、AGE
列の出力値が短い時間であることを確認します。たとえば、STATUS
列がRunning
で、AGE
列の値が50s
の場合、Pod は再起動後 50 秒間実行されています。次のコマンドを使用してポート転送を有効にします。
kubectl port-forward -n alloydb-omni-system DEPLOYMENT_POD_NAME PORT:PORT
DEPLOYMENT_POD_NAME は、次のコマンドの出力の
NAME
列に表示される Deployment の名前に置き換えます。kubectl get pod -n alloydb-omni-system
別のターミナルで次のコマンドを実行して、Deployment のメモリヒープのスナップショットを含むファイルを作成します。
curl http://localhost:PORT/debug/pprof/heap > heap.out
heap.out
ファイルを保存し、分析対象として選択した AlloyDB Omni Operator Deployment のメモリヒープを表示します。使用したポートを含む
pprof-address
引数を Deployment から削除して、メモリ分析を無効にします。Deployment をテキスト エディタで開きます。
kubectl edit -n alloydb-omni-system deploy local-controller-manager
前に追加したテンプレート
spec
のcontainer
セクションのargs
からポート--pprof-address=:PORT
の行を削除します。