Sobes.tech
Middle

Come integrare il profiler standard nella tua applicazione Go?

sobes.tech AI

Risposta dell'AI

Il pacchetto net/http/pprof fornisce gestori HTTP per i dati di profiling.

Importalo:

import (
	"net/http"
	_ "net/http/pprof" // È importante usare '_' per l'inizializzazione con effetto collaterale
)

Avvia un server HTTP in una goroutine separata:

go func() {
	// Avvia il server all'indirizzo locale e sulla porta standard di pprof
	if err := http.ListenAndServe("localhost:6060", nil); err != nil {
		// Gestisci l'errore di avvio del server, ad esempio loggando
		// log.Printf("server pprof fallito: %v", err)
	}
}()

Ora puoi accedere ai dati di profiling all'indirizzo http://localhost:6060/debug/pprof/.

Principali endpoint disponibili:

  • /debug/pprof/: Pagina principale con la lista dei profili disponibili.
  • /debug/pprof/heap: Profilo dell'heap.
  • /debug/pprof/goroutine: Profilo delle goroutine attive.
  • /debug/pprof/block: Profilo dei blocchi.
  • /debug/pprof/threadcreate: Profilo della creazione di thread del sistema operativo.
  • /debug/pprof/cmdline: Linea di comando dell'applicazione.
  • /debug/pprof/profile: Profilo CPU (per default raccoglie dati per 30 secondi).
  • /debug/pprof/trace: Profilo di traccia dell'esecuzione (per default raccoglie dati per 1 secondo).

Per analizzare i profili CPU, heap e blocchi si usa generalmente l'utility go tool pprof:

go tool pprof http://localhost:6060/debug/pprof/profile # Profilo CPU di 30 secondi
go tool pprof http://localhost:6060/debug/pprof/heap # Profilo dell'heap

Per analizzare il tracciamento dell'esecuzione si usa l'utility go tool trace:

go tool trace http://localhost:6060/debug/pprof/trace

Importante: Ricorda di mantenere la sicurezza e di non aprire la porta pprof pubblicamente senza autorizzazione in produzione.