Sobes.tech
Senior

Kuidas ühendada profiler Go-s? Kuidas profiile võtta?

sobes.tech AI

Vastus AI-lt

Go keeles kasutatakse profiili jaoks pakette net/http/pprof ja runtime/pprof.

Profila ühendamiseks HTTP-serveriga piisab, kui importida:

import _ "net/http/pprof"

ning käivitada HTTP-server, näiteks:

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

func main() {
    go func() {
        http.ListenAndServe(":6060", nil)
    }()
    // ülejäänud rakenduse kood
}

Pärast käivitamist saab profiile teha endpointidele pääsemisega:

  • http://localhost:6060/debug/pprof/profile — CPU profiil (vaikimisi 30 sekundit)
  • http://localhost:6060/debug/pprof/heap — mälu profiil
  • http://localhost:6060/debug/pprof/goroutine — gorutinite olek

CPU profiili salvestamiseks faili programmiga:

import (
    "os"
    "runtime/pprof"
)

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

    // profiilitav kood
}

Profiile analüüsiks kasutatakse käsku go tool pprof.