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.