Sobes.tech
Senior

Cum se conectează un profiler în Go? Cum se realizează profile?

sobes.tech AI

Răspuns de la AI

În Go, se utilizează pachetele net/http/pprof și runtime/pprof pentru profilare.

Pentru a conecta profiler-ul la serverul HTTP, este suficient să importați:

import _ "net/http/pprof"

și să porniți serverul HTTP, de exemplu:

import (
    "net/http"
    _ "net/http/pprof"
)

func main() {
    go func() {
        http.ListenAndServe(":6060", nil)
    }()
    // restul codului aplicației
}

După pornire, puteți face profile accesând endpoint-urile:

  • http://localhost:6060/debug/pprof/profile — Profil CPU (implicit 30 secunde)
  • http://localhost:6060/debug/pprof/heap — Profil memorie
  • http://localhost:6060/debug/pprof/goroutine — Starea goroutine-urilor

Pentru a salva profilul CPU în fișier programatic:

import (
    "os"
    "runtime/pprof"
)

func main() {
    f, _ := os.Create("cpu.prof")
    pprof.StartCPUProfile(f)
    defer pprof.StopCPUProfile()

    // codul de profilat
}

Pentru analiza profilurilor, se folosește comanda go tool pprof.