Middle
Come integrare il profiler standard nella tua applicazione Go?
sobes.tech AI
Risposta dell'AI
Il pacchetto net/http/pprof fornisce gestori HTTP per i dati di profiling.
Importalo:
import (
"net/http"
_ "net/http/pprof" // È importante usare '_' per l'inizializzazione con effetto collaterale
)
Avvia un server HTTP in una goroutine separata:
go func() {
// Avvia il server all'indirizzo locale e sulla porta standard di pprof
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// Gestisci l'errore di avvio del server, ad esempio loggando
// log.Printf("server pprof fallito: %v", err)
}
}()
Ora puoi accedere ai dati di profiling all'indirizzo http://localhost:6060/debug/pprof/.
Principali endpoint disponibili:
/debug/pprof/: Pagina principale con la lista dei profili disponibili./debug/pprof/heap: Profilo dell'heap./debug/pprof/goroutine: Profilo delle goroutine attive./debug/pprof/block: Profilo dei blocchi./debug/pprof/threadcreate: Profilo della creazione di thread del sistema operativo./debug/pprof/cmdline: Linea di comando dell'applicazione./debug/pprof/profile: Profilo CPU (per default raccoglie dati per 30 secondi)./debug/pprof/trace: Profilo di traccia dell'esecuzione (per default raccoglie dati per 1 secondo).
Per analizzare i profili CPU, heap e blocchi si usa generalmente l'utility go tool pprof:
go tool pprof http://localhost:6060/debug/pprof/profile # Profilo CPU di 30 secondi
go tool pprof http://localhost:6060/debug/pprof/heap # Profilo dell'heap
Per analizzare il tracciamento dell'esecuzione si usa l'utility go tool trace:
go tool trace http://localhost:6060/debug/pprof/trace
Importante: Ricorda di mantenere la sicurezza e di non aprire la porta pprof pubblicamente senza autorizzazione in produzione.