이 문서에서는 잠재적인 메모리 문제를 진단하고 디버그하는 데 도움이 되도록 AlloyDB Omni 연산자의 메모리 힙 스냅샷을 가져오는 방법을 설명합니다. 분석할 메모리 힙을 가져오려면 다음 단계를 따르세요.
분석할 AlloyDB Omni 운영자 배포를 결정합니다. AlloyDB Omni 연산자에는 두 가지 배포가 포함되어 있으며 두 배포 중 하나의 메모리 힙을 분석할 수 있습니다. 두 배포를 식별하려면 다음 명령어를 실행합니다.
kubectl get deployment -n alloydb-omni-system
출력에는
alloydb-omni-system
네임스페이스의 두 배포가 표시됩니다.fleet-controller-manager
local-controller-manager
두 배포 중 하나의 메모리 힙을 가져올 수 있습니다. 이 단계에서는 데모 목적으로
local-controller-manager
배포의 메모리 힙을 가져오는 방법을 보여줍니다.사용할 수 있는 포트를 지정하여 메모리 분석을 사용 설정합니다. 포트가 지정되면 포드가 다시 시작됩니다. 사용 가능한 포트를 지정하려면 배포에서
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
배포 파일을 저장합니다. 배포 파일을 저장하면 포드가 다시 시작됩니다.
포드가 다시 시작될 때까지 기다린 후 다음 단계를 진행합니다.
포드가 다시 시작되었는지 확인하려면 다음 명령어를 실행합니다.
kubectl get pod -n alloydb-omni-system
포드의
STATUS
열에 있는 출력 값이Running
이고AGE
열에 있는 출력 값이 짧은 시간인지 확인합니다. 예를 들어STATUS
열이Running
이고AGE
열의 값이50s
이면 포드가 다시 시작된 후 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
선을 삭제합니다.