Безусловно, вы можете создавать профили без http-сервера, используя пакет runtime / pprof . Также есть github.com / pkg / profile Дэйва Чейни, обертка для среды выполнения / pprof с более простым API. Например, вы можете использовать обработчики сигналов для включения и отключения профилирования.
При этом ничто не мешает вам запустить HTTP-сервер, только для pprof. Я считаю, что это гораздо удобнее, потому что тогда вы можете легко создать любой профиль по требованию.
// +build debug
package main
import (
"log"
"net/http"
_ "net/http/pprof/"
)
func init() {
log.Println("Launching pprof server")
go func() { log.Fatal(http.ListenAndServe("localhost:3030", nil)) }()
}
При этом используется тег сборки, поэтому вы можете включить сервер в разработке, но исключить его из производственных сборок. Скомпилируйте с -tags debug
, чтобы включить сервер. Подробнее см. Построение ограничений .