Senior
Como ligar um profiler em Go? Como tirar perfis?
sobes.tech IA
Resposta da IA
Em Go, utiliza-se o pacote net/http/pprof e o pacote runtime/pprof para profiling.
Para ligar o profiler ao servidor HTTP, basta importar:
import _ "net/http/pprof"
e iniciar o servidor HTTP, por exemplo:
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe(":6060", nil)
}()
// resto do código da aplicação
}
Após iniciar, pode tirar perfis acessando os endpoints:
http://localhost:6060/debug/pprof/profile— Perfil de CPU (padrão de 30 segundos)http://localhost:6060/debug/pprof/heap— Perfil de memóriahttp://localhost:6060/debug/pprof/goroutine— Estado das goroutines
Para gravar o perfil de CPU num ficheiro programaticamente:
import (
"os"
"runtime/pprof"
)
func main() {
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// código a perfilar
}
Para análise de perfis, usa-se o comando go tool pprof.