AlloyDB Omni Kubernetes 연산자 메모리 힙 사용량 분석

이 문서에서는 잠재적인 메모리 문제를 진단하고 디버그하는 데 도움이 되도록 AlloyDB Omni 연산자의 메모리 힙 스냅샷을 가져오는 방법을 설명합니다. 분석할 메모리 힙을 가져오려면 다음 단계를 따르세요.

  1. 분석할 AlloyDB Omni 운영자 배포를 결정합니다. AlloyDB Omni 연산자에는 두 가지 배포가 포함되어 있으며 두 배포 중 하나의 메모리 힙을 분석할 수 있습니다. 두 배포를 식별하려면 다음 명령어를 실행합니다.

    kubectl get deployment -n alloydb-omni-system

    출력에는 alloydb-omni-system 네임스페이스의 두 배포가 표시됩니다.

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

    두 배포 중 하나의 메모리 힙을 가져올 수 있습니다. 이 단계에서는 데모 목적으로 local-controller-manager 배포의 메모리 힙을 가져오는 방법을 보여줍니다.

  2. 사용할 수 있는 포트를 지정하여 메모리 분석을 사용 설정합니다. 포트가 지정되면 포드가 다시 시작됩니다. 사용 가능한 포트를 지정하려면 배포에서 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. 배포 파일을 저장합니다. 배포 파일을 저장하면 포드가 다시 시작됩니다.

  3. 포드가 다시 시작될 때까지 기다린 후 다음 단계를 진행합니다.

    포드가 다시 시작되었는지 확인하려면 다음 명령어를 실행합니다.

    kubectl get pod -n alloydb-omni-system

    포드의 STATUS 열에 있는 출력 값이 Running이고 AGE 열에 있는 출력 값이 짧은 시간인지 확인합니다. 예를 들어 STATUS 열이 Running이고 AGE 열의 값이 50s이면 포드가 다시 시작된 후 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 선을 삭제합니다.

다음 단계