pprof로 CPU 프로파일링
CPU 프로파일을 수집하고 시각화합니다.
pprof로 CPU 프로파일링은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
pprof란 무엇입니까
net/http/pprof와 runtime/pprof 패키지는 프로그램이 CPU 시간을 어디에 사용하는지 보여 주는 프로파일링 데이터를 제공합니다. go tool pprof CLI는 프로파일을 분석합니다.
HTTP pprof 엔드포인트
_ "net/http/pprof"를 가져오면 기존 HTTP 서버에 /debug/pprof/ 아래의 프로파일링 엔드포인트가 등록됩니다.
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe(":6060", nil))
}()CPU 프로파일 캡처
HTTP 엔드포인트를 통해 30초 동안 CPU 프로파일을 캡처합니다:
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30파일 기반 CPU 프로파일링
HTTP 서버가 없는 프로그램에서는 runtime/pprof를 사용해 프로파일 파일을 작성합니다:
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// run workload테스트에서 프로파일링
-cpuprofile 및 -memprofile 플래그를 사용해 실제와 유사한 테스트 부하에서 프로파일링을 수행합니다:
go test -cpuprofile cpu.prof -memprofile mem.prof -bench=. ./...go tool pprof 대화형 모드
프로파일을 열고 대화형 명령으로 탐색합니다:
go tool pprof cpu.prof
(pprof) top # top functions by CPU time
(pprof) list main # annotated source
(pprof) web # call graph in browser플레임 그래프
-http=:8080을 사용해 대화형 웹 UI에서 플레임 그래프(graphviz 필요)를 생성합니다:
go tool pprof -http=:8080 cpu.proftop 출력 해석
top은 자체 시간(해당 함수에서 사용한 시간)과 누적 시간(호출된 함수의 시간을 포함)을 기준으로 함수를 정렬해 보여 줍니다. 직접 최적화할 기회를 찾으려면 자체 시간이 높은 함수에 집중합니다.
고루틴 프로파일
/debug/pprof/goroutine 엔드포인트는 모든 고루틴의 스택 추적을 보여 줍니다. 고루틴 누수나 차단된 고루틴을 감지할 때 사용합니다.
go tool pprof http://localhost:6060/debug/pprof/goroutine지속적 프로파일링
프로덕션 시스템에서는 서비스 중단 없이 프로파일을 캡처하려면 Pyroscope, Datadog, Google Cloud Profiler와 같은 지속적 프로파일링 서비스를 사용합니다.
CI에서 pprof 사용
코드의 두 버전에서 생성된 프로파일을 비교해 성능 저하가 프로덕션에 도달하기 전에 감지합니다.
빠른 확인
pprof top 출력에서 "self" 열은 무엇을 나타냅니까?
복습: pprof를 사용한 CPU 프로파일링
핵심 사항:
- HTTP 엔드포인트에는 net/http/pprof를, 파일에는 runtime/pprof를 가져옵니다
- 플레임 그래프 UI에는 go tool pprof -http=:8080 사용
- top: 자체 시간 = 직접 비용, 누적 시간 = 호출된 함수를 포함한 전체 비용
- 벤치마크 프로파일링에는 go test -cpuprofile 사용
자주 묻는 질문
“pprof로 CPU 프로파일링” 강의는 무료인가요?
네 — “pprof로 CPU 프로파일링” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“pprof로 CPU 프로파일링”에서 뭘 배우나요?
CPU 프로파일을 수집하고 시각화합니다. 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“pprof로 CPU 프로파일링” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- testing.B로 벤치마크 작성
- pprof로 CPU 프로파일링
- 힙 및 할당 프로파일링
- 실행 추적