실행 추적
고루틴 수준의 분석을 위한 go tool trace
실행 추적은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
실행 추적이란 무엇입니까
Go 실행 추적기는 고루틴 스케줄링, GC 이벤트, 시스템 호출 및 힙 증가를 시간순으로 기록합니다. CPU 또는 힙 프로파일에서는 확인할 수 없는 병렬성과 지연 시간을 시각적으로 보여 줍니다.
추적 캡처
HTTP 엔드포인트를 통해 추적을 캡처합니다:
curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out
go tool trace trace.out파일 기반 추적
runtime/trace를 사용해 프로그래밍 방식으로 추적을 기록합니다:
f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workloadgo test -trace
테스트 또는 벤치마크 실행 중 추적을 캡처합니다:
go test -trace trace.out -bench=. ./...
go tool trace trace.out추적 뷰어
추적 뷰어(go tool trace)를 브라우저에서 열면 고루틴의 시간 순서, GC 이벤트, 힙 크기 및 특정 시점의 고루틴별 스택 추적을 확인할 수 있습니다.
고루틴 분석
고루틴 분석 보기에서는 고루틴을 함수별로 그룹화하고 각 고루틴이 실행 중, 실행 가능(P를 기다리는 중), 차단됨(채널/뮤텍스/시스템 호출), 대기 중 상태에 얼마나 오래 머무는지 보여 줍니다.
스케줄러 지연 찾기
높은 "runnable" 시간은 고루틴이 실행할 준비는 되었지만 스케줄되지 않았다는 의미입니다. 이는 너무 많은 고루틴이 GOMAXPROCS개의 P를 두고 경쟁하거나 프로세스에 CPU가 부족하다는 뜻입니다.
GC 영향
세계를 중지하는 GC 일시 중지는 모든 고루틴에 걸쳐 회색 막대로 표시됩니다. 일시 중지가 길거나 GC가 자주 발생한다면 과도한 할당을 의미하므로, 힙 프로파일링과 함께 분석해 할당을 줄이십시오.
사용자 주석
trace.WithRegion과 trace.Log를 사용해 추적에 사용자 지정 구간을 추가하면 자체 코드 영역을 표시하여 더 쉽게 분석할 수 있습니다.
trace.WithRegion(ctx, "parse request", func() {
parseRequest(req)
})작업과 영역
trace.NewTask는 관련 영역을 이름이 지정된 작업 아래에 그룹화하므로 여러 고루틴에 걸친 논리적 작업의 처음부터 끝까지의 지연 시간을 측정할 수 있습니다.
ctx, task := trace.NewTask(ctx, "handle request")
defer task.End()추적과 프로파일 비교
CPU 프로파일: 시간이 지남에 따라 어떤 함수가 CPU를 사용하는지 보여 줍니다. 힙 프로파일: 어떤 함수가 메모리를 할당하는지 보여 줍니다. 추적: 고루틴이 언제 실행되고 차단되는지, GC가 이 과정에 어떻게 섞이는지 보여 줍니다. 질문에 따라 서로 다른 도구를 사용합니다.
빠른 확인
실행 추적에서 고루틴 상태가 "runnable"이라는 것은 무엇을 의미합니까?
복습: 실행 추적
핵심 사항:
- go tool trace는 고루틴의 시간 순서, GC 이벤트 및 스케줄링을 보여 줍니다
- HTTP 엔드포인트 또는 runtime/trace 패키지를 통해 캡처합니다
- 실행 가능 시간 → 스케줄러 경합, GC 일시 중지 → 과도한 할당
- 사용자 주석(WithRegion, NewTask)으로 자체 코드 영역을 표시합니다
자주 묻는 질문
“실행 추적” 강의는 무료인가요?
네 — “실행 추적” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“실행 추적”에서 뭘 배우나요?
고루틴 수준의 분석을 위한 go tool trace 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“실행 추적” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.