Middle
¿Cómo integrar el perfilador estándar en su aplicación en Go?
sobes.tech AI
Respuesta de la IA
El paquete net/http/pprof proporciona manejadores HTTP para datos de perfilado.
Importarlo:
import (
"net/http"
_ "net/http/pprof" // Es importante usar '_' para inicialización con efecto secundario
)
Ejecute un servidor HTTP en una goroutine separada:
go func() {
// Iniciar el servidor en la dirección local y el puerto estándar pprof
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// Manejar error al iniciar el servidor, por ejemplo, registrar en logs
// log.Printf("servidor pprof falló: %v", err)
}
}()
Ahora puede acceder a los datos de perfilado en http://localhost:6060/debug/pprof/.
Puntos finales principales disponibles:
/debug/pprof/: Página principal con la lista de perfiles disponibles./debug/pprof/heap: Perfil del heap./debug/pprof/goroutine: Perfil de goroutines activas./debug/pprof/block: Perfil de bloqueos./debug/pprof/threadcreate: Perfil de creación de hilos del sistema operativo./debug/pprof/cmdline: Línea de comandos de la aplicación./debug/pprof/profile: Perfil de CPU (recopila datos durante 30 segundos por defecto)./debug/pprof/trace: Perfil de trazado de ejecución (recopila datos durante 1 segundo por defecto).
Para analizar perfiles de CPU, heap y bloqueos, generalmente se usa la utilidad go tool pprof:
go tool pprof http://localhost:6060/debug/pprof/profile # Perfil de CPU durante 30 segundos
go tool pprof http://localhost:6060/debug/pprof/heap # Perfil del heap
Para analizar trazas de ejecución, se usa la utilidad go tool trace:
go tool trace http://localhost:6060/debug/pprof/trace
Importante: Recuerde la seguridad y no abra el puerto con pprof al público sin autorización en producción.