Sobes.tech
Senior

Kaip prijungti profiler'į Go? Kaip imti profilius?

sobes.tech AI

Atsakymas iš AI

Go kalba profiliavimui naudojami paketai net/http/pprof ir runtime/pprof.

Norint prijungti profilį prie HTTP serverio, pakanka importuoti:

import _ "net/http/pprof"

ir paleisti HTTP serverį, pavyzdžiui:

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

func main() {
    go func() {
        http.ListenAndServe(":6060", nil)
    }()
    // kito programos kodo dalis
}

Po paleidimo, profilius galima gauti pasiekiant endpoint'us:

  • http://localhost:6060/debug/pprof/profile — CPU profilis (numatytasis 30 sekundžių)
  • http://localhost:6060/debug/pprof/heap — atminties profilis
  • http://localhost:6060/debug/pprof/goroutine — gorutinių būklė

Norint programiškai įrašyti CPU profilį į failą:

import (
    "os"
    "runtime/pprof"
)

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

    // kodas, kurį reikia profiliuoti
}

Profiliai analizei naudojama komanda go tool pprof.