Suorituksen jäljitys
go tool trace goroutine-tason analyysiin
Suorituksen jäljitys on ilmainen Go Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Go Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Go Academy-kurssilla on yhteensä 4 oppituntia.
Mitä suoritusjäljitys on?
Go-suoritusjäljitin tallentaa aikajanan goroutinejen ajoituksesta, roskienkeräystapahtumista, järjestelmäkutsuista ja keon kasvusta. Se tarjoaa visuaalisen näkymän rinnakkaisuuteen ja viiveisiin, joita CPU- tai kekoprofiilit eivät näytä.
Jäljityksen kerääminen
Kerätkää jäljitys HTTP-päätepisteen kautta:
curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out
go tool trace trace.outTiedostopohjainen jäljitys
Käyttäkää runtime/trace-pakettia jäljityksen ohjelmalliseen tallentamiseen:
f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workloadgo test -trace
Kerätkää jäljitys testien tai benchmarkien suorittamisen aikana:
go test -trace trace.out -bench=. ./...
go tool trace trace.outJäljityksen katselin
Jäljityksen katselin (go tool trace) avautuu selaimessa ja näyttää goroutinejen aikajanat, roskienkeräystapahtumat, keon koon sekä kunkin goroutinen pinojäljet millä tahansa ajanhetkellä.
Goroutinejen analysointi
Goroutine Analysis -näkymä ryhmittelee goroutinet funktion mukaan ja näyttää, kuinka kauan kukin goroutine viettää eri tiloissa: käynnissä, ajettavissa (odottaa P:tä), estyneenä (kanavan, mutexin tai järjestelmäkutsun vuoksi) ja lepotilassa.
Ajoittimen viiveen löytäminen
Pitkä "runnable"-aika tarkoittaa, että goroutinet ovat valmiita suoritettaviksi mutta niitä ei ajoiteta. Tämä osoittaa, että liian monet goroutinet kilpailevat GOMAXPROCS P -konteksteista tai että prosessilla ei ole riittävästi CPU-aikaa.
Roskienkeräyksen vaikutus
Roskienkeräyksen stop-the-world-keskeytykset näkyvät harmaina palkkeina kaikkien goroutinejen kohdalla. Pitkät keskeytykset tai usein toistuva roskienkeräys viittaavat liialliseen allokointiin — yhdistäkää tulokset kekoprofilointiin allokointien vähentämiseksi.
Käyttäjän merkinnät
Lisätkää jäljitykseen mukautettuja alueita käyttämällä trace.WithRegion- ja trace.Log-toimintoja, jotta omat koodiosionne on helpompi analysoida.
trace.WithRegion(ctx, "parse request", func() {
parseRequest(req)
})task ja region
trace.NewTask ryhmittelee toisiinsa liittyvät alueet nimetyn tehtävän alle, joten voitte mitata loogisen toiminnon päästä päähän ulottuvan viiveen useiden goroutinejen yli.
ctx, task := trace.NewTask(ctx, "handle request")
defer task.End()Jäljitys ja profiili
CPU-profiili: mitkä funktiot käyttävät CPU:ta ajan kuluessa. Kekoprofiili: mitkä funktiot allokoivat muistia. Jäljitys: milloin goroutinet suoritetaan ja estyvät sekä miten roskienkeräys limittyy suoritukseen — eri työkalut eri kysymyksiä varten.
Pikatarkistus
Mitä "runnable"-goroutinen tila tarkoittaa suoritusjäljityksessä?
Kertaus: suoritusjäljitys
Tärkeimmät kohdat:
- go tool trace näyttää goroutinejen aikajanat, roskienkeräystapahtumat ja ajoituksen
- Kerätkää jäljitys HTTP-päätepisteen tai runtime/trace-paketin kautta
- Runnable-aika → ajoittimen kilpailu; roskienkeräyksen keskeytykset → liialliset allokoinnit
- Käyttäjän merkinnät (WithRegion, NewTask) merkitsevät omat koodiosiot
Opi Go tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 51
- Oppitunnit
- 203
Usein kysytyt kysymykset
Onko oppitunti ”Suorituksen jäljitys” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Go Academy-oppimispolun 3 oppituntia, myös oppitunnin “Suorituksen jäljitys”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Go Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Suorituksen jäljitys”?
go tool trace goroutine-tason analyysiin Harjoittelet Go Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Go Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Go Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Suorituksen jäljitys”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Go Academy-oppitunnilla?
Kyllä. Jokainen Go Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Benchmarkien kirjoittaminen testing.B:llä
- Suorittimen profilointi pprofilla
- Keon ja varausten profilointi
- Suorituksen jäljitys