Go include în biblioteca sa standard unul dintre cele mai avansate și mature ecosisteme de profilare din industrie: pprof. Spre deosebire de alte platforme unde instrumentarea necesită modificări invazive sau încetiniri masive ale aplicației, pprof are un overhead minim în producție (< 2%), permițând investigarea exactă a consumului de CPU, a alocărilor pe heap, a blocajelor pe mutex-uri și a goroutine-urilor orfane.
package main
import (
"log"
"net/http"
_ "net/http/pprof" // Înregistrează automat endpoint-urile /debug/pprof/
)
func main() {
// Deschidem un server HTTP separat dedicat strict metricilor și depanării:
go func() {
log.Println("Pprof activ pe http://localhost:6060/debug/pprof/")
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
// ... logica principală a aplicației ...
select {}
}
Comenzi Esențiale de Profilare în Terminal
# 1. Profilare CPU timp de 30 de secunde cu interfață grafică web interactivă:
go tool pprof -http=:8081 http://localhost:6060/debug/pprof/profile?seconds=30
# 2. Inspectarea alocărilor curente pe Heap (Memory Leaks):
go tool pprof -http=:8081 http://localhost:6060/debug/pprof/heap
# 3. Detectarea scurgerilor de goroutine-uri (Goroutine Leak):
go tool pprof -http=:8081 http://localhost:6060/debug/pprof/goroutine
În interfața web deschisă, vizualizarea de tip Flame Graph și Top Functions vă arată exact linia de cod și numărul de octeți alocați responsabili pentru încărcarea serverului.