Back to questions
Senior
5
Как подключить профайлер в Go? Как снимать профили?
Companies where asked
А7
Answer from AI
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.