PHpullh
학습 라이브러리/Go/pprof CPU 프로파일링

GO · 성능

pprof CPU 프로파일링

runtime/pprofnet/http/pprof로 CPU 사용을 분석합니다. 핫스팟을 찾아 최적화합니다.

성능고급pprofcpuprofilingoptimization

핵심 설명

runtime/pprofnet/http/pprof로 CPU 사용을 분석합니다. 핫스팟을 찾아 최적화합니다.

Go code

package main

import (
	"fmt"
	"os"
	"runtime/pprof"
)

func heavyWork() int {
	sum := 0
	for i := 0; i < 10_000_000; i++ {
		sum += i * i
	}
	return sum
}

func main() {
	// CPU 프로파일 생성
	f, _ := os.Create("cpu.prof")
	defer f.Close()

	pprof.StartCPUProfile(f)
	defer pprof.StopCPUProfile()

	// 프로파일할 코드
	result := heavyWork()
	fmt.Println("결과:", result)

	fmt.Println("\n프로파일 분석:")
	fmt.Println("  go tool pprof cpu.prof")
	fmt.Println("  (pprof) top 10           # 상위 10개 함수")
	fmt.Println("  (pprof) list heavyWork   # 함수별 상세")
	fmt.Println("  (pprof) web              # 웹 시각화")
	fmt.Println()
	fmt.Println("HTTP 서버에서:")
	fmt.Println("  import _ "net/http/pprof"")
	fmt.Println("  go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30")

	os.Remove("cpu.prof")
}

학습 팁

net/http/pprof를 import하면 /debug/pprof/ 엔드포인트가 자동 등록됩니다. 프로덕션에서는 별도 포트로 분리하세요.

주의할 점

pprof 엔드포인트를 공개 포트에 노출하면 보안 위험입니다. 내부 네트워크에서만 접근 가능하도록 설정하세요.

자주 묻는 질문

pprof CPU 프로파일링란 무엇인가요?

runtime/pprof 과 net/http/pprof 로 CPU 사용을 분석합니다. 핫스팟을 찾아 최적화합니다.

pprof CPU 프로파일링 학습 시 주의할 점은 무엇인가요?

pprof 엔드포인트를 공개 포트에 노출하면 보안 위험입니다. 내부 네트워크에서만 접근 가능하도록 설정하세요.