Senior
Comment connecter un profileur en Go ? Comment prendre des profils ?
sobes.tech IA
Réponse de l'IA
En Go, le profilage utilise les packages net/http/pprof et runtime/pprof.
Pour connecter le profileur au serveur HTTP, il suffit d'importer :
import _ "net/http/pprof"
et de lancer le serveur HTTP, par exemple :
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe(":6060", nil)
}()
// reste du code de l'application
}
Après le démarrage, il est possible de prendre des profils en accédant aux points d'extrémité :
http://localhost:6060/debug/pprof/profile— Profil CPU (par défaut 30 secondes)http://localhost:6060/debug/pprof/heap— Profil mémoirehttp://localhost:6060/debug/pprof/goroutine— État des goroutines
Pour enregistrer le profil CPU dans un fichier de manière programmatique :
import (
"os"
"runtime/pprof"
)
func main() {
f, _ := os.Create("cpu.prof")
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
// code à profiler
}
Pour analyser les profils, la commande go tool pprof est utilisée.