Senior
Kaip prijungti profiler'į Go? Kaip imti profilius?
sobes.tech AI
Atsakymas iš AI
Go kalba profiliavimui naudojami paketai net/http/pprof ir runtime/pprof.
Norint prijungti profilį prie HTTP serverio, pakanka importuoti:
import _ "net/http/pprof"
ir paleisti HTTP serverį, pavyzdžiui:
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe(":6060", nil)
}()
// kito programos kodo dalis
}
Po paleidimo, profilius galima gauti pasiekiant endpoint'us:
http://localhost:6060/debug/pprof/profile— CPU profilis (numatytasis 30 sekundžių)http://localhost:6060/debug/pprof/heap— atminties profilishttp://localhost:6060/debug/pprof/goroutine— gorutinių būklė
Norint programiškai įrašyti CPU profilį į failą:
import (
"os"
"runtime/pprof"
)
func main() {
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// kodas, kurį reikia profiliuoti
}
Profiliai analizei naudojama komanda go tool pprof.