AlloyDB Omni Kubernetes オペレーターのメモリヒープ使用量を分析する

このドキュメントでは、AlloyDB Omni オペレータのメモリヒープのスナップショットを取得して、潜在的なメモリの問題を診断およびデバッグする方法について説明します。分析用のメモリヒープを取得する手順は次のとおりです。

  1. 分析する 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 デプロイのメモリヒープを取得する手順を示します。

  2. 使用可能なポートを指定して、メモリ分析を有効にします。ポートを指定すると、Pod が再起動します。使用可能なポートを指定するには、デプロイで pprof-address 引数を使用します。

    1. 次のコマンドを実行して、デプロイメントをテキスト エディタで開きます。

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. テンプレート speccontainer セクションの args でポートを指定します。

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. デプロイ ファイルを保存します。Deployment ファイルを保存すると、Pod が再起動します。

  3. Pod が再起動するまで待ってから、次のステップに進みます。

    Pod が再起動したことを確認するには、次のコマンドを実行します。

    kubectl get pod -n alloydb-omni-system

    Pod の STATUS 列の出力値が Running であり、AGE 列の出力値が短い時間であることを確認します。たとえば、STATUS 列が Running で、AGE 列の値が 50s の場合、Pod は再起動後 50 秒間実行されています。

  4. 次のコマンドを使用してポート転送を有効にします。

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

    DEPLOYMENT_POD_NAME は、次のコマンドの出力の NAME 列に表示されるデプロイメントの名前に置き換えます。

    kubectl get pod -n alloydb-omni-system
  5. 別のターミナルで次のコマンドを実行して、デプロイのメモリヒープのスナップショットを含むファイルを作成します。

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. heap.out ファイルを保存し、分析対象として選択した AlloyDB Omni オペレーター デプロイのメモリヒープを表示します。

  7. デプロイメントから使用したポートを含む pprof-address 引数を削除して、メモリ分析をオフにします。

    1. デプロイメントをテキスト エディタで開きます。

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. 前に追加したテンプレート speccontainer セクションの args からポート --pprof-address=:PORT 行を削除します。

次のステップ