Sobes.tech
Middle+

Aké sú spôsoby identifikácie a diagnostiky problémov s výkonom v produkcii?

sobes.tech AI

Odpoveď od AI

  • Monitorovanie metrík:
    • Použitie vstavaných balíkov: expvar (jednoduché kľúč-hodnota metriky), runtime (štatistiky GC, goroutine a pod.).
    • Externé knižnice: Prometheus, Datadog, New Relic.
    • Sledovanie RPS, oneskorenia požiadaviek, chýb, spotreby zdrojov (CPU, RAM).
  • Profilovanie:
    • Použitie balíka net/http/pprof pre HTTP služby.
    • Použitie balíka runtime/pprof na generovanie profilov CPU, pamäte, zámkov, goroutine.
    • Analýza profilov pomocou nástroja go tool pprof.
    # Príklad použitia go tool pprof
    go tool pprof http://localhost:6060/debug/pprof/heap  # Profil haldy
    
    • Typy profilovania: CPU, Heap, Goroutine, Blocking, Mutex, ThreadCreate, Trace.
  • Traceovanie:
    • Použitie balíka golang.org/x/net/trace.
    • Použitie OpenTracing/OpenTelemetry pre distribuované traceovanie.
    • Sledovanie cesty požiadavky systémom, identifikácia úzkych miest vo vzťahu služieb.
    // Príklad použitia trace
    import "golang.org/x/net/trace"
    
    func handleRequest(w http.ResponseWriter, r *http.Request) {
        tr := trace.New("my_service", "handleRequest")
        defer tr.Finish()
    
        // Logovanie udalostí v trace
        tr.LazyLog("Začiatok spracovania požiadavky", false)
    
        // ... logika spracovania požiadavky ...
    
        tr.LazyLog("Dokončenie spracovania požiadavky", false)
    }
    
  • Analýza logov:
    • Zber a centralizované ukladanie logov (ELK Stack, Loki/Grafana).
    • Vyhľadávanie anomálií, chýb, pomalých požiadaviek v logoch.
    • Integrácia logov s traceovaním na spojenie udalostí.
  • Použitie špecializovaných APM (Application Performance Monitoring) riešení:
    • Dynatrace, AppDynamics, New Relic.
    • Poskytujú komplexné nástroje na monitorovanie, profilovanie a traceovanie.
  • Porovnanie monitorovania, profilovania a traceovania:
Nástroj Účel Úroveň detailu Overhead
Monitorovanie Všeobecný stav systému, trendy Nízky Nízky
Profilovanie Identifikácia horúcich miest (funkcie, alokácie) Vysoký Stredný
Traceovanie Cesta požiadavky, interakcia komponentov Stredný Stredný/Vysoký
  • Vykonanie záťažových testov pred nasadením do produkcie.
  • Použitie Go Dog (plugin pre go test) na benchmarking na úrovni funkcií/metód.
  • Zber a analýza dumpov pamäte (Heap Dumps) na odhalenie únikov pamäte alebo nadmernej spotreby.