Sobes.tech
Middle

Comment intégrer le profileur standard dans votre application Go?

sobes.tech IA

Réponse de l'IA

Le paquet net/http/pprof fournit des gestionnaires HTTP pour les données de profilage.

Importez-le:

import (
	"net/http"
	_ "net/http/pprof" // Il est important d'utiliser '_' pour l'initialisation avec effet secondaire
)

Lancez un serveur HTTP dans une goroutine séparée:

go func() {
	// Démarrer le serveur à l'adresse locale et au port standard pprof
	if err := http.ListenAndServe("localhost:6060", nil); err != nil {
		// Gérer l'erreur de démarrage du serveur, par exemple en journalisant
		// log.Printf("échec du serveur pprof : %v", err)
	}
}()

Vous pouvez maintenant accéder aux données de profilage à l'adresse http://localhost:6060/debug/pprof/.

Principaux points de terminaison disponibles:

  • /debug/pprof/: Page principale avec la liste des profils disponibles.
  • /debug/pprof/heap: Profil du tas.
  • /debug/pprof/goroutine: Profil des goroutines actives.
  • /debug/pprof/block: Profil des blocages.
  • /debug/pprof/threadcreate: Profil de création de threads du système d'exploitation.
  • /debug/pprof/cmdline: Ligne de commande de l'application.
  • /debug/pprof/profile: Profil CPU (par défaut, collecte des données pendant 30 secondes).
  • /debug/pprof/trace: Profil de traçage d'exécution (par défaut, collecte des données pendant 1 seconde).

Pour analyser les profils CPU, heap et blocages, utilisez généralement l'outil go tool pprof:

go tool pprof http://localhost:6060/debug/pprof/profile # Profil CPU pendant 30 secondes
go tool pprof http://localhost:6060/debug/pprof/heap # Profil du tas

Pour analyser la trace d'exécution, utilisez l'outil go tool trace:

go tool trace http://localhost:6060/debug/pprof/trace

Important : Souvenez-vous de la sécurité et ne pas ouvrir le port pprof au public sans autorisation en production.