Senior
Kako povezati profiler u Go? Kako snimiti profile?
sobes.tech АИ
Одговор од АИ
U Go se koriste paketi net/http/pprof i runtime/pprof za profilisanje.
Da biste povezali profiler sa HTTP serverom, dovoljno je da uvezete:
import _ "net/http/pprof"
i pokrenete HTTP server, na primer:
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe(":6060", nil)
}()
// ostatak koda aplikacije
}
Nakon pokretanja, profile možete praviti pristupanjem endpoint-ima:
http://localhost:6060/debug/pprof/profile— CPU profil (podrazumevano 30 sekundi)http://localhost:6060/debug/pprof/heap— profil memorijehttp://localhost:6060/debug/pprof/goroutine— stanje gorutina
Za programatsko zapisivanje CPU profila u fajl:
import (
"os"
"runtime/pprof"
)
func main() {
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// kod za profilisanje
}
Za analizu profila koristi se komanda go tool pprof.