Optimizarea Performanței și Depistarea Alocărilor de Memorie cu go tool pprof în Go

Teste și benchmark-uri (testing) Standard Go Toolchain

Ghid complet de profiling în Go de producție cu pprof: colectarea și analiza grafică a consumului de CPU, identificarea scăpărilor de memorie (heap leaks) și a scurgerilor de goroutine-uri (goroutine leaks).

Sintaxă
_ "net/http/pprof" | go tool pprof -http=:8080 http://localhost:6060/debug/pprof/heap

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.

Activarea punctului final de profiling pe un port intern
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.