Sobes.tech
Senior

Kako povezati profiler u Go? Kako snimiti profile?

sobes.tech АИ

Одговор од АИ

U Go se koriste paketi net/http/pprof i runtime/pprof za profilisanje.

Da biste povezali profiler sa HTTP serverom, dovoljno je da uvezete:

import _ "net/http/pprof"

i pokrenete HTTP server, na primer:

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

func main() {
    go func() {
        http.ListenAndServe(":6060", nil)
    }()
    // ostatak koda aplikacije
}

Nakon pokretanja, profile možete praviti pristupanjem endpoint-ima:

  • http://localhost:6060/debug/pprof/profile — CPU profil (podrazumevano 30 sekundi)
  • http://localhost:6060/debug/pprof/heap — profil memorije
  • http://localhost:6060/debug/pprof/goroutine — stanje gorutina

Za programatsko zapisivanje CPU profila u fajl:

import (
    "os"
    "runtime/pprof"
)

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

    // kod za profilisanje
}

Za analizu profila koristi se komanda go tool pprof.