Sobes.tech
Senior

Как да свържете профайлър в Go? Как да правите профили?

sobes.tech AI

Отговор от AI

В Go се използват пакетите net/http/pprof и runtime/pprof за профилиране.

За да свържете профайлъра към HTTP сървъра, достатъчно е да импортирате:

import _ "net/http/pprof"

и да стартирате HTTP сървър, например:

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

func main() {
    go func() {
        http.ListenAndServe(":6060", nil)
    }()
    // останалият код на приложението
}

След стартиране, профилирането може да се извършва чрез достъп до ендпойнтите:

  • http://localhost:6060/debug/pprof/profile — CPU профил (по подразбиране 30 секунди)
  • http://localhost:6060/debug/pprof/heap — профил на паметта
  • http://localhost:6060/debug/pprof/goroutine — състояние на горутините

За записване на CPU профил във файл програмно:

import (
    "os"
    "runtime/pprof"
)

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

    // код за профилиране
}

За анализ на профилите се използва командата go tool pprof.