Sobes.tech
Middle

Ako integrovať štandardný profiler do svojej aplikácie v Go?

sobes.tech AI

Odpoveď od AI

Balík net/http/pprof poskytuje HTTP spracovateľov pre profilovacie údaje.

Importujte ho:

import (
	"net/http"
	_ "net/http/pprof" // Je dôležité použiť '_' pre inicializáciu s vedľajšími efektmi
)

Spustite HTTP server v samostatnej gorutíne:

go func() {
	// Spustite server na lokálnej adrese a na štandardnom porte pprof
	if err := http.ListenAndServe("localhost:6060", nil); err != nil {
		// Ošetrite chybu pri spustení servera, napríklad logovaním
		// log.Printf("pprof server zlyhal: %v", err)
	}
}()

Teraz môžete získať prístup k profilovacím údajom na adrese http://localhost:6060/debug/pprof/.

Hlavné dostupné koncové body:

  • /debug/pprof/: Hlavná stránka so zoznamom dostupných profilov.
  • /debug/pprof/heap: Profil haldy.
  • /debug/pprof/goroutine: Profil aktívnych gorútín.
  • /debug/pprof/block: Profil zámkov.
  • /debug/pprof/threadcreate: Profil vytvárania vlákien OS.
  • /debug/pprof/cmdline: Príkazový riadok aplikácie.
  • /debug/pprof/profile: CPU profil (predvolene zbiera údaje 30 sekúnd).
  • /debug/pprof/trace: Profil sledovania vykonávania (predvolene zbiera údaje 1 sekundu).

Na analýzu CPU, haldy a zámkov sa zvyčajne používa nástroj go tool pprof:

go tool pprof http://localhost:6060/debug/pprof/profile # CPU profil za 30 sekúnd
go tool pprof http://localhost:6060/debug/pprof/heap # Profil haldy

Na analýzu sledovania vykonávania sa používa nástroj go tool trace:

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

Dôležité: Pamätajte na bezpečnosť a neotvárajte port s pprof verejne bez autorizácie v produkcii.