Sobes.tech
Middle

Kako integrisati standardni profiler u vašu Go aplikaciju?

sobes.tech АИ

Одговор од АИ

Paket net/http/pprof pruža HTTP rukovatelje za podatke o profilisanju.

Uvežite ga:

import (
	"net/http"
	_ "net/http/pprof" // Važno je koristiti '_' za inicijalizaciju sa efektima po strani
)

Pokrenite HTTP server u posebnoj gorutini:

go func() {
	// Pokrenite server na lokalnoj adresi i na standardnom portu pprof
	if err := http.ListenAndServe("localhost:6060", nil); err != nil {
		// Obradite grešku pri pokretanju servera, npr. logovanjem
		// log.Printf("pprof server nije uspeo: %v", err)
	}
}()

Sada možete pristupiti podacima o profilisanju na adresi http://localhost:6060/debug/pprof/.

Glavni dostupni krajnji punktovi:

  • /debug/pprof/: Glavna stranica sa listom dostupnih profila.
  • /debug/pprof/heap: Profil hrpe.
  • /debug/pprof/goroutine: Profil aktivnih gorutina.
  • /debug/pprof/block: Profil blokada.
  • /debug/pprof/threadcreate: Profil kreiranja OS niti.
  • /debug/pprof/cmdline: Komandna linija aplikacije.
  • /debug/pprof/profile: CPU profil (podrazumevano prikuplja podatke 30 sekundi).
  • /debug/pprof/trace: Profil praćenja izvršenja (podrazumevano prikuplja podatke 1 sekundu).

Za analizu CPU, hrpe i blokada, obično se koristi alat go tool pprof:

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

Za analizu praćenja izvršenja, koristi se alat go tool trace:

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

Važno: Setite se bezbednosti i ne otvarajte port pprof javno bez autorizacije u produkciji.