Sobes.tech
Middle

Hoe integreer je de standaard profiler in je Go-toepassing?

sobes.tech AI

Antwoord van AI

Het pakket net/http/pprof biedt HTTP-handlers voor profileringgegevens.

Importeer het:

import (
	"net/http"
	_ "net/http/pprof" // Het is belangrijk om '_' te gebruiken voor initialisatie met neveneffecten
)

Start een HTTP-server in een aparte goroutine:

go func() {
	// Start de server op het lokale adres en de standaard pprof-poort
	if err := http.ListenAndServe("localhost:6060", nil); err != nil {
		// Verwerk de fout bij het starten van de server, bijvoorbeeld loggen
		// log.Printf("pprof-server mislukt: %v", err)
	}
}()

Je kunt nu toegang krijgen tot profileringgegevens via http://localhost:6060/debug/pprof/.

Belangrijkste beschikbare eindpunten:

  • /debug/pprof/: Hoofdpagina met lijst van beschikbare profielen.
  • /debug/pprof/heap: Heap-profiel.
  • /debug/pprof/goroutine: Profiel van actieve goroutines.
  • /debug/pprof/block: Profiel van blokkades.
  • /debug/pprof/threadcreate: Profiel van het aanmaken van OS-threads.
  • /debug/pprof/cmdline: Opdrachtregel van de applicatie.
  • /debug/pprof/profile: CPU-profiel (standaard verzamelt het gegevens gedurende 30 seconden).
  • /debug/pprof/trace: Trace-profiel van uitvoering (standaard verzamelt het gegevens gedurende 1 seconde).

Voor het analyseren van CPU-, heap- en blokkadeprofielen wordt meestal de tool go tool pprof gebruikt:

go tool pprof http://localhost:6060/debug/pprof/profile # CPU-profiel voor 30 seconden
go tool pprof http://localhost:6060/debug/pprof/heap # Heap-profiel

Voor het analyseren van trace wordt de tool go tool trace gebruikt:

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

Belangrijk: Denk aan de beveiliging en open de pprof-poort niet publiekelijk zonder autorisatie in productie.