Sobes.tech
Senior

Jak připojit profiler v Go? Jak pořizovat profily?

sobes.tech AI

Odpověď od AI

V Go se používají balíčky net/http/pprof a runtime/pprof pro profilování.

Pro připojení profileru k HTTP serveru stačí importovat:

import _ "net/http/pprof"

a spustit HTTP server, například:

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

func main() {
    go func() {
        http.ListenAndServe(":6060", nil)
    }()
    // zbytek kódu aplikace
}

Po spuštění lze profily pořizovat přístupem k endpointům:

  • http://localhost:6060/debug/pprof/profile — CPU profil (výchozí 30 sekund)
  • http://localhost:6060/debug/pprof/heap — profil paměti
  • http://localhost:6060/debug/pprof/goroutine — stav gorutin

Pro programové uložení CPU profilu do souboru:

import (
    "os"
    "runtime/pprof"
)

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

    // kód, který má být profilován
}

Pro analýzu profilů se používá příkaz go tool pprof.