Sobes.tech
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émoire
  • http://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.