Go Academy · Lezione

Profilazione della CPU con pprof

Raccogliere e visualizzare i profili della CPU

Lezione 2 di 413 passaggi

Profilazione della CPU con pprof è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Che cos'è pprof

net/http/pprof e il package runtime/pprof espongono dati di profiling che mostrano dove il programma impiega il tempo della CPU. La CLI go tool pprof analizza i profili.

Endpoint HTTP di pprof

Importi _ "net/http/pprof" per registrare gli endpoint di profiling nel percorso /debug/pprof/ su un server HTTP esistente.

import _ "net/http/pprof"

go func() {
    log.Println(http.ListenAndServe(":6060", nil))
}()

Acquisire un profilo CPU

Acquisisca 30 secondi di profilo CPU tramite l'endpoint HTTP:

go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30

Profiling CPU basato su file

Per i programmi privi di un server HTTP, usi runtime/pprof per scrivere un file di profilo:

f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// run workload

Profiling nei test

Esegua i test con i flag -cpuprofile e -memprofile per eseguire il profiling con un carico di test realistico:

go test -cpuprofile cpu.prof -memprofile mem.prof -bench=. ./...

Modalità interattiva di go tool pprof

Apra il profilo ed esplori i dati usando comandi interattivi:

go tool pprof cpu.prof
(pprof) top        # top functions by CPU time
(pprof) list main  # annotated source
(pprof) web        # call graph in browser

Flame graph

Generi un flame graph (richiede graphviz) con -http=:8080 per un'interfaccia web interattiva:

go tool pprof -http=:8080 cpu.prof

Interpretare l'output di top

top mostra le funzioni ordinate per tempo proprio (il tempo trascorso nella funzione) e tempo cumulativo (incluso quello delle funzioni chiamate). Si concentri sulle funzioni con tempo proprio elevato per individuare opportunità di ottimizzazione diretta.

Profilo delle goroutine

L'endpoint /debug/pprof/goroutine mostra tutte le tracce dello stack delle goroutine. Lo usi per rilevare goroutine perse o bloccate.

go tool pprof http://localhost:6060/debug/pprof/goroutine

Profiling continuo

Per i sistemi in produzione, usi servizi di profiling continuo (Pyroscope, Datadog, Google Cloud Profiler) per acquisire profili senza arrestare il servizio.

pprof nella CI

Confronti i profili di due versioni del codice per rilevare regressioni delle prestazioni prima che arrivino in produzione.

Verifica rapida

Che cosa rappresenta la colonna "self" nell'output di pprof top?

Riepilogo: profiling CPU con pprof

Punti chiave:

  • Importi net/http/pprof per l'endpoint HTTP; runtime/pprof per i file
  • go tool pprof -http=:8080 per l'interfaccia del flame graph
  • top: tempo proprio = costo diretto; cumulativo = costo totale incluse le funzioni chiamate
  • go test -cpuprofile per il profiling dei benchmark
Gratis per iniziare

Impara Go con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
51
Lezioni
203

Domande Frequenti

La lezione «Profilazione della CPU con pprof» è gratuita?

Sì — il testo completo di «Profilazione della CPU con pprof» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Profilazione della CPU con pprof»?

Raccogliere e visualizzare i profili della CPU Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Profilazione della CPU con pprof»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Scrivere benchmark con testing.B
  2. Profilazione della CPU con pprof
  3. Profilazione dell'heap e delle allocazioni
  4. Tracciamento dell'esecuzione
← Torna a Go Academy