Sobes.tech
Middle+

Koji su načini identifikacije i dijagnostike problema sa performansama u proizvodnji?

sobes.tech АИ

Одговор од АИ

  • Monitoring metrika:
    • Korišćenje ugrađenih paketa: expvar (jednostavne ključ-vrednost metrike), runtime (statistika GC, goroutine i dr.).
    • Spoljašnje biblioteke: Prometheus, Datadog, New Relic.
    • Praćenje RPS, kašnjenja zahteva, grešaka, potrošnje resursa (CPU, RAM).
  • Profilisanje:
    • Korišćenje paketa net/http/pprof za HTTP servise.
    • Korišćenje paketa runtime/pprof za generisanje profila CPU, memorije, blokada, goroutine.
    • Analiza profila pomoću alata go tool pprof.
    # Primer korišćenja go tool pprof
    go tool pprof http://localhost:6060/debug/pprof/heap  # Profil hrpe
    
    • Tipovi profilisanja: CPU, Heap, Goroutine, Blocking, Mutex, ThreadCreate, Trace.
  • Tracing:
    • Korišćenje paketa golang.org/x/net/trace.
    • Korišćenje OpenTracing/OpenTelemetry za distribuirano tracovanje.
    • Praćenje puta zahteva kroz sistem, identifikacija uskih grla u interakciji servisa.
    // Primer korišćenja trace
    import "golang.org/x/net/trace"
    
    func handleRequest(w http.ResponseWriter, r *http.Request) {
        tr := trace.New("my_service", "handleRequest")
        defer tr.Finish()
    
        // Logovanje događaja u traci
        tr.LazyLog("Početak obrade zahteva", false)
    
        // ... logika obrade zahteva ...
    
        tr.LazyLog("Završetak obrade zahteva", false)
    }
    
  • Analiza logova:
    • Sakupljanje i centralizovano čuvanje logova (ELK Stack, Loki/Grafana).
    • Pretraživanje anomalija, grešaka, sporih zahteva u logovima.
    • Integracija logova sa traciranjem za povezivanje događaja.
  • Korišćenje specijalizovanih APM (Application Performance Monitoring) rešenja:
    • Dynatrace, AppDynamics, New Relic.
    • Obuhvataju sveobuhvatne alate za monitoring, profilisanje i traciranje.
  • Poređenje monitoringa, profilisanja i traciranja:
Alat Svrha Nivo detalja Overhead
Monitoring Opšte stanje sistema, trendovi Nizak Nizak
Profilisanje Identifikacija toplih tačaka (funkcija, alokacija) Visok Srednji
Tracing Put zahteva, interakcija komponenti Srednji Srednji/Vисоки
  • Sprovođenje opterećenjskih testova pre deploy-a u produkciju.
  • Korišćenje Go Dog (plugin za go test) za benchmarking na nivou funkcija/metoda.
  • Sakupljanje i analiza dumpova memorije (Heap Dumps) za identifikaciju curenja memorije ili prekomerne potrošnje.