Senior
Come collegare un profiler in Go? Come registrare i profili?
sobes.tech AI
Risposta dell'AI
In Go, vengono utilizzati i pacchetti net/http/pprof e runtime/pprof per il profiling.
Per collegare il profiler al server HTTP, basta importare:
import _ "net/http/pprof"
e avviare il server HTTP, ad esempio:
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe(":6060", nil)
}()
// resto del codice dell'applicazione
}
Dopo l'avvio, è possibile acquisire profili accedendo agli endpoint:
http://localhost:6060/debug/pprof/profile— Profilo CPU (predefinito 30 secondi)http://localhost:6060/debug/pprof/heap— Profilo della memoriahttp://localhost:6060/debug/pprof/goroutine— Stato delle goroutine
Per registrare il profilo CPU in un file programmaticamente:
import (
"os"
"runtime/pprof"
)
func main() {
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// codice da profilare
}
Per analizzare i profili si utilizza il comando go tool pprof.