Middle
Cum să integrezi profilerul standard în aplicația ta Go?
sobes.tech AI
Răspuns de la AI
Pachetul net/http/pprof oferă handler-e HTTP pentru datele de profilare.
Importați-l:
import (
"net/http"
_ "net/http/pprof" // Este important să folosiți '_' pentru inițializare cu efecte secundare
)
Porniți un server HTTP într-o gorutină separată:
go func() {
// Porniți serverul pe adresa locală și portul standard pprof
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// Tratați eroarea de pornire a serverului, de exemplu, în jurnal
// log.Printf("server pprof a eșuat: %v", err)
}
}()
Acum puteți accesa datele de profilare la adresa http://localhost:6060/debug/pprof/.
Puncte finale principale disponibile:
/debug/pprof/: Pagina principală cu lista profilurilor disponibile./debug/pprof/heap: Profilul heap-ului./debug/pprof/goroutine: Profilul goroutine-urilor active./debug/pprof/block: Profilul blocărilor./debug/pprof/threadcreate: Profilul creării thread-urilor OS./debug/pprof/cmdline: Linia de comandă a aplicației./debug/pprof/profile: Profilul CPU (colectează date timp de 30 de secunde în mod implicit)./debug/pprof/trace: Profilul de urmărire a execuției (colectează date timp de 1 secundă în mod implicit).
Pentru analiza profilurilor CPU, heap și blocări, se folosește de obicei utilitarul go tool pprof:
go tool pprof http://localhost:6060/debug/pprof/profile # Profil CPU pentru 30 de secunde
go tool pprof http://localhost:6060/debug/pprof/heap # Profil heap
Pentru analiza urmării execuției, se folosește utilitarul go tool trace:
go tool trace http://localhost:6060/debug/pprof/trace
Important: Amintiți-vă de securitate și nu deschideți portul pprof publicului fără autorizare în producție.