Sobes.tech
Middle

Jak integrovat standardní profiler do své aplikace v Go?

sobes.tech AI

Odpověď od AI

Balíček net/http/pprof poskytuje HTTP obsluhovače pro profilovací data.

Naimportujte ho:

import (
	"net/http"
	_ "net/http/pprof" // Je důležité používat '_' pro inicializaci s vedlejšími efekty
)

Spusťte HTTP server v samostatné gorutině:

go func() {
	// Spusťte server na lokální adrese a na výchozím portu pprof
	if err := http.ListenAndServe("localhost:6060", nil); err != nil {
		// Ošetřete chybu při spuštění serveru, například logováním
		// log.Printf("pprof server selhal: %v", err)
	}
}()

Nyní můžete získat přístup k profilovacím datům na adrese http://localhost:6060/debug/pprof/.

Hlavní dostupné koncové body:

  • /debug/pprof/: Hlavní stránka se seznamem dostupných profilů.
  • /debug/pprof/heap: Profil haldy.
  • /debug/pprof/goroutine: Profil aktivních gorutin.
  • /debug/pprof/block: Profil zámků.
  • /debug/pprof/threadcreate: Profil vytváření vláken OS.
  • /debug/pprof/cmdline: Příkazový řádek aplikace.
  • /debug/pprof/profile: CPU profil (výchozí shromažďuje data po dobu 30 sekund).
  • /debug/pprof/trace: Profil sledování provádění (výchozí shromažďuje data po dobu 1 sekundy).

Pro analýzu CPU, haldy a zámků se obvykle používá nástroj go tool pprof:

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

Pro analýzu sledování provádění se používá nástroj go tool trace:

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

Důležité: Pamatujte na bezpečnost a neotevírejte port pprof veřejně bez autorizace v produkci.