Middle
Kako integrisati standardni profiler u vašu Go aplikaciju?
sobes.tech АИ
Одговор од АИ
Paket net/http/pprof pruža HTTP rukovatelje za podatke o profilisanju.
Uvežite ga:
import (
"net/http"
_ "net/http/pprof" // Važno je koristiti '_' za inicijalizaciju sa efektima po strani
)
Pokrenite HTTP server u posebnoj gorutini:
go func() {
// Pokrenite server na lokalnoj adresi i na standardnom portu pprof
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// Obradite grešku pri pokretanju servera, npr. logovanjem
// log.Printf("pprof server nije uspeo: %v", err)
}
}()
Sada možete pristupiti podacima o profilisanju na adresi http://localhost:6060/debug/pprof/.
Glavni dostupni krajnji punktovi:
/debug/pprof/: Glavna stranica sa listom dostupnih profila./debug/pprof/heap: Profil hrpe./debug/pprof/goroutine: Profil aktivnih gorutina./debug/pprof/block: Profil blokada./debug/pprof/threadcreate: Profil kreiranja OS niti./debug/pprof/cmdline: Komandna linija aplikacije./debug/pprof/profile: CPU profil (podrazumevano prikuplja podatke 30 sekundi)./debug/pprof/trace: Profil praćenja izvršenja (podrazumevano prikuplja podatke 1 sekundu).
Za analizu CPU, hrpe i blokada, obično se koristi alat go tool pprof:
go tool pprof http://localhost:6060/debug/pprof/profile # CPU profil za 30 sekundi
go tool pprof http://localhost:6060/debug/pprof/heap # Profil hrpe
Za analizu praćenja izvršenja, koristi se alat go tool trace:
go tool trace http://localhost:6060/debug/pprof/trace
Važno: Setite se bezbednosti i ne otvarajte port pprof javno bez autorizacije u produkciji.