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.