프로필 노드 데이터
프로파일링은 Kaia 노드의 성능을 이해하고 최적화하는 데 필수적인 도구입니다. 이 튜토리얼에서는 Kaia의 디버그 API와 net/http/pprof
Go 패키지를 활용하여 Kaia 노드 운영자가 사용할 수 있는 다양한 프로파일링 기법에 대해 안내합니다.
전제 조건
시작하기 전에 다음 사항을 확인하세요:
-
노드 설정: Kaia 노드가 올바르게 설치되어 실행 중입니다.
-
노드 콘솔에 액세스하기: 노드 콘솔을 통해 노드와 상호 작용해야 합니다.
-
도구: Go를 시스템에 설치하여
go tool pprof
및go tool trace
를 사용합니다. 실행하여 확인할 수 있습니다:
go version
1. 프로파일링 관리하기: 시작, 중지 및 상태 확인 방법
Kaia 노드는 여러 가지 프로파일링 방법을 제공하는 debug
API를 제공합니다. 노드의 콘솔 또는 JSON-RPC API 호출을 통해 이러한 메서드와 상호 작용할 수 있습니다.
1.1 pprof HTTP 서버 시작하기
pprof HTTP 서버를 사용하면 프로파일링 데이터를 효율적으로 수집하고 분석할 수 있습니다.
# Start pprof server with default settings (localhost:6060)> debug.startPProf()# Start pprof server on a specific address and port> debug.startPProf("localhost", 8080)
pprof 엔드포인트에 액세스
pprof 서버가 실행 중이면 다음 주소에서 프로파일링 데이터에 액세스합니다:
- http://localhost:6060/debug/pprof/ - 사용 가능한 프로필 개요.
- http://localhost:6060/memsize/ - 메모리 크기 보고서.
- http://localhost:6060/debug/vars - Prometheus 메트릭용 내보내기.
1.2 pprof HTTP 서버 중지하기
> debug.stopPProf()
1.3 pprof가 실행 중인지 확인하기
> debug.isPProfRunning()true # if runningfalse # if not running
2. 프로필 수집
pprof 서버가 실행되면 여러 가지 방법을 사용하여 다양한 프로파일을 수집하여 노드의 성능을 분석할 수 있습니다.
2.1 웹 인터페이스를 사용하여 수집
다음 예시와 같이 웹 브라우저에 각각의 엔드포인트를 입력하여 다양한 프로필을 수집하세요:
힙 프로필 수집
http://localhost:6060/debug/pprof/heap
30초 CPU 프로파일 수집
http://localhost:6060/debug/pprof/profile?seconds=30
debug=2로 고루틴 프로파일 수집
http://localhost:6060/debug/pprof/goroutine?debug=2
2.2 API 호출을 사용하여 수집
다음 예시와 같이 노드 콘솔에 각 명령을 입력하여 프로필을 수집하거나 구성합니다:
# Collect 30-second CPU profile> debug.cpuProfile("cpu.profile", 30)# Collect 30-second block profile> debug.blockProfile("block.profile", 30)# Set mutex profiling fraction> debug.setMutexProfileFraction(1)
2.3 go tool pprof
'를 사용하여 수집하기
pprof 웹 인터페이스에 액세스할 수 없는 경우, go tool pprof
를 사용하여 로컬에서 프로파일링 결과를 생성하고 분석할 수 있습니다.
사용 가능한 프로필 유형 식별
지원되는 프로필은 다음과 같습니다:
allocs
: 과거의 모든 메모리 할당의 샘플링입니다.block
: 동기화 프리미티브에 대한 차단으로 이어진 스택 추적.goroutine
: 현재 모든 고루틴의 트레이스를 스택합니다. 복구되지 않은 패닉과 동일한 형식으로 내보내려면 쿼리 매개변수로debug=2
를 사용합 니다.heap
: 라이브 객체의 메모리 할당 샘플링입니다. 힙 샘플을 채취하기 전에gc
GET 매개변수를 지정하여 가비지 컬렉션을 실행할 수 있습니다.mutex
: 경합 중인 뮤텍스 보유자의 흔적을 스택에 쌓습니다.profile
: CPU 프로파일.seconds
GET 매개변수에 기간을 지정할 수 있습니다. 프로필 파일을 받은 후go tool pprof
명령을 사용하여 프로필을 조사합니다.threadcreate
: 새 OS 스레드를 생성한 스택 추적을 추적합니다.trace
: 현재 프로그램의 실행 흔적입니다.seconds
GET 매개변수에 기간을 지정할 수 있습니다. 추적 파일을 받은 후go tool trace
명령을 사용하여 추적을 조사합니다.
go tool pprof
를 사용하여 프로필 수집하기
go tool pprof http://localhost:6060/debug/pprof/<profiletype>
<0>
를 위에 나열된 지원되는 프로필 중 하나(예: heap
, profile
)로 바꿉니다.