Sobes.tech
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.