Sobes.tech
Назад к вопросам
Senior
4

Как подключить профайлер в Go? Как снимать профили?

Компании, где спрашивали
А7

Ответ от нейросети

sobes.tech 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.