Middle
Jak integrovat standardní profiler do své aplikace v Go?
sobes.tech AI
Odpověď od AI
Balíček net/http/pprof poskytuje HTTP obsluhovače pro profilovací data.
Naimportujte ho:
import (
"net/http"
_ "net/http/pprof" // Je důležité používat '_' pro inicializaci s vedlejšími efekty
)
Spusťte HTTP server v samostatné gorutině:
go func() {
// Spusťte server na lokální adrese a na výchozím portu pprof
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// Ošetřete chybu při spuštění serveru, například logováním
// log.Printf("pprof server selhal: %v", err)
}
}()
Nyní můžete získat přístup k profilovacím datům na adrese http://localhost:6060/debug/pprof/.
Hlavní dostupné koncové body:
/debug/pprof/: Hlavní stránka se seznamem dostupných profilů./debug/pprof/heap: Profil haldy./debug/pprof/goroutine: Profil aktivních gorutin./debug/pprof/block: Profil zámků./debug/pprof/threadcreate: Profil vytváření vláken OS./debug/pprof/cmdline: Příkazový řádek aplikace./debug/pprof/profile: CPU profil (výchozí shromažďuje data po dobu 30 sekund)./debug/pprof/trace: Profil sledování provádění (výchozí shromažďuje data po dobu 1 sekundy).
Pro analýzu CPU, haldy a zámků se obvykle používá nástroj go tool pprof:
go tool pprof http://localhost:6060/debug/pprof/profile # CPU profil za 30 sekund
go tool pprof http://localhost:6060/debug/pprof/heap # Profil haldy
Pro analýzu sledování provádění se používá nástroj go tool trace:
go tool trace http://localhost:6060/debug/pprof/trace
Důležité: Pamatujte na bezpečnost a neotevírejte port pprof veřejně bez autorizace v produkci.