Sobes.tech
Middle

Kaip integruoti standartinį profiliatorių į savo Go programą?

sobes.tech AI

Atsakymas iš AI

net/http/pprof paketas teikia HTTP tvarkyklės profilaktikai.

Importuokite jį:

import (
	"net/http"
	_ "net/http/pprof" // Svarbu naudoti '_' inicializacijai su šalutiniais efektais
)

Paleiskite HTTP serverį atskiroje goroutine:

go func() {
	// Paleiskite serverį vietiniame adresu ir standartiniame pprof prievade
	if err := http.ListenAndServe("localhost:6060", nil); err != nil {
		// Tvarkykite serverio paleidimo klaidą, pvz., registruodami
		// log.Printf("pprof serveris nepavyko: %v", err)
	}
}()

Dabar galite pasiekti profilaktinius duomenis adresu http://localhost:6060/debug/pprof/.

Pagrindiniai prieinami galiniai taškai:

  • /debug/pprof/: Pagrindinis puslapis su prieinamų profilių sąrašu.
  • /debug/pprof/heap: Heap profilis.
  • /debug/pprof/goroutine: Aktyvių goroutine profilis.
  • /debug/pprof/block: Blokavimo profilis.
  • /debug/pprof/threadcreate: OS gijų kūrimo profilis.
  • /debug/pprof/cmdline: Programos komandų eilutė.
  • /debug/pprof/profile: CPU profilis (numatytasis surenka duomenis 30 sekundžių).
  • /debug/pprof/trace: Vykdymo sekimo profilis (numatytasis surenka duomenis 1 sekundę).

CPU, heap ir blokavimo profilių analizė dažnai atliekama naudojant go tool pprof įrankį:

go tool pprof http://localhost:6060/debug/pprof/profile # CPU profilis 30 sekundžių
ngo tool pprof http://localhost:6060/debug/pprof/heap # Heap profilis

Vykdymo sekimo analizė atliekama naudojant go tool trace įrankį:

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

Svarbu: Atminkite saugumą ir neatskleiskite pprof prievado viešai be autorizacijos gamybos aplinkoje.