CPU-profilering med pprof
Indsamling og visualisering af CPU-profiler
CPU-profilering med pprof er en gratis Go Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Go Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Go Academy-kurset indeholder 4 lektioner i alt.
Hvad er pprof?
net/http/pprof- og runtime/pprof-pakken eksponerer profileringsdata, der viser, hvor dit program bruger CPU-tid. Kommandolinjeværktøjet go tool pprof analyserer profiler.
HTTP-slutpunkt for pprof
Importér _ "net/http/pprof" for at registrere profileringsslutpunkter under /debug/pprof/ på en eksisterende HTTP-server.
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe(":6060", nil))
}()Optagelse af en CPU-profil
Optag 30 sekunders CPU-profil via HTTP-slutpunktet:
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30Filbaseret CPU-profilering
Brug runtime/pprof til at skrive en profilfil for programmer uden en HTTP-server:
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// run workloadProfilering i tests
Kør tests med flagene -cpuprofile og -memprofile for at profilere under en realistisk testbelastning:
go test -cpuprofile cpu.prof -memprofile mem.prof -bench=. ./...Interaktiv tilstand i go tool pprof
Åbn profilen, og udforsk den med interaktive kommandoer:
go tool pprof cpu.prof
(pprof) top # top functions by CPU time
(pprof) list main # annotated source
(pprof) web # call graph in browserFlammegraf
Generér en flammegraf (kræver graphviz) med -http=:8080 for at åbne en interaktiv webgrænseflade:
go tool pprof -http=:8080 cpu.profFortolkning af top-output
top viser funktioner sorteret efter egen tid (tid i selve funktionen) og kumulativ tid (inklusive kaldte funktioner). Fokuser på funktioner med høj egen tid for at finde direkte optimeringsmuligheder.
Goroutine-profil
Slutpunktet /debug/pprof/goroutine viser alle goroutines' stackspor. Brug det til at finde goroutine-lækager eller blokerede goroutines.
go tool pprof http://localhost:6060/debug/pprof/goroutineLøbende profilering
Til produktionssystemer kan du bruge tjenester til løbende profilering (Pyroscope, Datadog, Google Cloud Profiler) til at optage profiler uden at stoppe tjenesten.
pprof i CI
Sammenlign profiler fra to versioner af din kode for at finde ydelsesforringelser, før de når produktion.
Hurtigt tjek
Hvad repræsenterer kolonnen "self" i pprof's top-output?
Opsummering: CPU-profilering med pprof
Nøglepunkter:
- Importér net/http/pprof til et HTTP-slutpunkt; runtime/pprof til en fil
- go tool pprof -http=:8080 til en flammegraf i en webgrænseflade
- top: egen tid = direkte omkostning; kumulativ tid = samlet omkostning inklusive kaldte funktioner
- go test -cpuprofile til profilering af benchmarks
Lær Go med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “CPU-profilering med pprof” gratis?
Ja — alle 3 lektioner i læringssporet Go Academy, inklusive “CPU-profilering med pprof”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Go Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “CPU-profilering med pprof”?
Indsamling og visualisering af CPU-profiler Du øver dig i Go Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Go Academy?
Der kræves ingen tidligere erfaring. Go Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “CPU-profilering med pprof”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Go Academy-lektion?
Ja. Alle Go Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Skrivning af benchmarks med testing.B
- CPU-profilering med pprof
- Heap- og allokeringsprofilering
- Tracing af eksekvering