Middle
Jak zintegrować standardowy profiler w swojej aplikacji Go?
sobes.tech AI
Odpowiedź od AI
Pakiet net/http/pprof zapewnia obsługę HTTP dla danych profilowania.
Zaimportuj go:
import (
"net/http"
_ "net/http/pprof" // Ważne jest użycie '_' do inicjalizacji efektów ubocznych
)
Uruchom serwer HTTP w osobnej goroutine:
go func() {
// Uruchom serwer na lokalnym adresie i na standardowym porcie pprof
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
// Obsłuż błąd uruchomienia serwera, np. logując
// log.Printf("serwer pprof nie powiódł się: %v", err)
}
}()
Teraz możesz uzyskać dostęp do danych profilowania pod adresem http://localhost:6060/debug/pprof/.
Główne dostępne punkty końcowe:
/debug/pprof/: Strona główna z listą dostępnych profili./debug/pprof/heap: Profil sterty./debug/pprof/goroutine: Profil aktywnych goroutine./debug/pprof/block: Profil blokad./debug/pprof/threadcreate: Profil tworzenia wątków OS./debug/pprof/cmdline: Linia poleceń aplikacji./debug/pprof/profile: Profil CPU (domyślnie zbiera dane przez 30 sekund)./debug/pprof/trace: Profil śledzenia wykonania (domyślnie zbiera dane przez 1 sekundę).
Do analizy profili CPU, sterty i blokad zwykle używa się narzędzia go tool pprof:
go tool pprof http://localhost:6060/debug/pprof/profile # Profil CPU za 30 sekund
go tool pprof http://localhost:6060/debug/pprof/heap # Profil sterty
Do analizy śledzenia wykonania używa się narzędzia go tool trace:
go tool trace http://localhost:6060/debug/pprof/trace
Ważne: Pamiętaj o bezpieczeństwie i nie otwieraj portu pprof publicznie bez autoryzacji w produkcji.