Sobes.tech
Senior

Jak podłączyć profilator w Go? Jak robić profile?

sobes.tech AI

Odpowiedź od AI

W Go do profilowania używa się pakietów net/http/pprof i runtime/pprof.

Aby podłączyć profilera do serwera HTTP, wystarczy zaimportować:

import _ "net/http/pprof"

i uruchomić serwer HTTP, na przykład:

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

func main() {
    go func() {
        http.ListenAndServe(":6060", nil)
    }()
    // reszta kodu aplikacji
}

Po uruchomieniu można pobrać profile, odwołując się do punktów końcowych:

  • http://localhost:6060/debug/pprof/profile — Profil CPU (domyślnie 30 sekund)
  • http://localhost:6060/debug/pprof/heap — Profil pamięci
  • http://localhost:6060/debug/pprof/goroutine — Stan goroutineów

Aby programowo zapisać profil CPU do pliku:

import (
    "os"
    "runtime/pprof"
)

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

    // kod do profilowania
}

Do analizy profili używa się polecenia go tool pprof.