Sobes.tech
Middle+

Kokie yra būdai identifikuoti ir diagnozuoti našumo problemas gamyboje?

sobes.tech AI

Atsakymas iš AI

  • Metrių stebėjimas:
    • Naudojant įmontuotus paketus: expvar (paprasti raktas-vertė metrikos), runtime (GC, goroutine ir kt. statistika).
    • Trečiųjų šalių bibliotekos: Prometheus, Datadog, New Relic.
    • Stebėti RPS, užklausų vėlavimą, klaidas, išteklių naudojimą (CPU, RAM).
  • Profilavimas:
    • Naudojant paketą net/http/pprof HTTP paslaugoms.
    • Naudojant paketą runtime/pprof CPU, atminties, užraktų, goroutine profilių generavimui.
    • Analizuojant profilius naudojant įrankį go tool pprof.
    # Pavyzdys, kaip naudoti `go tool pprof`
    go tool pprof http://localhost:6060/debug/pprof/heap  # Krūvos profilis
    
    • Profilavimo tipai: CPU, Heap, Goroutine, Blocking, Mutex, ThreadCreate, Trace.
  • Traukinys:
    • Naudojant paketą golang.org/x/net/trace.
    • Naudojant OpenTracing/OpenTelemetry paskirstytam traukiniui.
    • Stebėti užklausos kelią per sistemą, nustatyti siauras vietas paslaugų sąveikoje.
    // Pavyzdys, kaip naudoti trace
    import "golang.org/x/net/trace"
    
    func handleRequest(w http.ResponseWriter, r *http.Request) {
        tr := trace.New("my_service", "handleRequest")
        defer tr.Finish()
    
        // Įvykių registravimas trase
        tr.LazyLog("Pradėti užklausos apdorojimą", false)
    
        // ... užklausos apdorojimo logika ...
    
        tr.LazyLog("Užklausos apdorojimas baigtas", false)
    }
    
  • Logų analizė:
    • Logų surinkimas ir centralizuotas saugojimas (ELK Stack, Loki/Grafana).
    • Anomalių, klaidų, lėtų užklausų paieška loguose.
    • Logų ir traukinių integracija įvykių sujungimui.
  • Naudojant specializuotas APM sprendimus:
    • Dynatrace, AppDynamics, New Relic.
    • Siūlo išsamias priemones stebėjimui, profilavimui ir traukiniui.
  • Stebėjimo, profilavimo ir traukimo palyginimas:
Įrankis Paskirtis Detalumo lygis Ovehead
Stebėjimas Bendra sistemos būklė, tendencijos Žemas Žemas
Profilavimas Karštų taškų nustatymas (funkcijos, atlaisvinimai) Aukštas Vidutinis
Traukinys Užklausos kelias, komponentų sąveika Vidutinis Vidutinis/Aukštas
  • Atlikti apkrovos testus prieš diegiant į gamybą.
  • Naudoti go test su Go Dog plėtiniu funkcijų ir metodų bandomiesiems matavimams.
  • Surinkti ir analizuoti atminties dump'us, siekiant nustatyti atminties nutekėjimus ar per didelį naudojimą.