このドキュメントでは、AlloyDB Omni オペレータのメモリヒープのスナップショットを取得して、潜在的なメモリの問題を診断およびデバッグする方法について説明します。分析用のメモリヒープを取得する手順は次のとおりです。
分析する AlloyDB Omni オペレーターのデプロイメントを決定します。AlloyDB Omni オペレーターには 2 つのデプロイメントが含まれており、どちらのメモリヒープでも分析できます。2 つのデプロイメントを特定するには、次のコマンドを実行します。
kubectl get deployment -n alloydb-omni-system
出力には、
alloydb-omni-system
Namespace 内の 2 つの Deployment が表示されます。fleet-controller-manager
local-controller-manager
どちらのデプロイメントのメモリヒープでも取得できます。デモ用に、
local-controller-manager
デプロイのメモリヒープを取得する手順を示します。使用可能なポートを指定して、メモリ分析を有効にします。ポートを指定すると、Pod が再起動します。使用可能なポートを指定するには、デプロイで
pprof-address
引数を使用します。次のコマンドを実行して、デプロイメントをテキスト エディタで開きます。
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 ファイルを保存すると、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
列に表示されるデプロイメントの名前に置き換えます。kubectl get pod -n alloydb-omni-system
別のターミナルで次のコマンドを実行して、デプロイのメモリヒープのスナップショットを含むファイルを作成します。
curl http://localhost:PORT/debug/pprof/heap > heap.out
heap.out
ファイルを保存し、分析対象として選択した AlloyDB Omni オペレーター デプロイのメモリヒープを表示します。デプロイメントから使用したポートを含む
pprof-address
引数を削除して、メモリ分析をオフにします。デプロイメントをテキスト エディタで開きます。
kubectl edit -n alloydb-omni-system deploy local-controller-manager
前に追加したテンプレート
spec
のcontainer
セクションのargs
からポート--pprof-address=:PORT
行を削除します。