Senior
¿Cómo conectar un perfilador en Go? ¿Cómo tomar perfiles?
sobes.tech AI
Respuesta de la IA
En Go, se utilizan los paquetes net/http/pprof y runtime/pprof para el perfilado.
Para conectar el perfilador al servidor HTTP, basta con importar:
import _ "net/http/pprof"
y ejecutar el servidor HTTP, por ejemplo:
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe(":6060", nil)
}()
// resto del código de la aplicación
}
Después de iniciar, se pueden tomar perfiles accediendo a los endpoints:
http://localhost:6060/debug/pprof/profile— Perfil de CPU (por defecto 30 segundos)http://localhost:6060/debug/pprof/heap— Perfil de memoriahttp://localhost:6060/debug/pprof/goroutine— Estado de las goroutines
Para grabar el perfil de CPU en un archivo programáticamente:
import (
"os"
"runtime/pprof"
)
func main() {
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// código a perfilar
}
Para analizar los perfiles, se usa el comando go tool pprof.