Sobes.tech
Middle+

Jaké jsou způsoby identifikace a diagnostiky problémů s výkonem v produkci?

sobes.tech AI

Odpověď od AI

  • Monitorování metrik:
    • Použití vestavěných balíčků: expvar (jednoduché klíč-hodnota metriky), runtime (statistiky GC, goroutine a další).
    • Třetí strany knihovny: Prometheus, Datadog, New Relic.
    • Sledování RPS, zpoždění požadavků, chyb, spotřeby zdrojů (CPU, RAM).
  • Profilování:
    • Použití balíčku net/http/pprof pro HTTP služby.
    • Použití balíčku runtime/pprof pro generování profilů CPU, paměti, zámků, goroutine.
    • Analýza profilů pomocí nástroje go tool pprof.
    # Příklad použití go tool pprof
    go tool pprof http://localhost:6060/debug/pprof/heap  # Profil haldy
    
    • Typy profilování: CPU, Heap, Goroutine, Blocking, Mutex, ThreadCreate, Trace.
  • Traceování:
    • Použití balíčku golang.org/x/net/trace.
    • Použití OpenTracing/OpenTelemetry pro distribuované traceování.
    • Sledování cesty požadavku systémem, identifikace úzkých míst ve spolupráci služeb.
    // Příklad použití trace
    import "golang.org/x/net/trace"
    
    func handleRequest(w http.ResponseWriter, r *http.Request) {
        tr := trace.New("my_service", "handleRequest")
        defer tr.Finish()
    
        // Logování událostí v trace
        tr.LazyLog("Začátek zpracování požadavku", false)
    
        // ... logika zpracování požadavku ...
    
        tr.LazyLog("Dokončeno zpracování požadavku", false)
    }
    
  • Analýza logů:
    • Sběr a centralizované ukládání logů (ELK Stack, Loki/Grafana).
    • Vyhledávání anomálií, chyb, pomalých požadavků v logech.
    • Integrace logů s traceováním pro spojení událostí.
  • Použití specializovaných APM (Application Performance Monitoring) řešení:
    • Dynatrace, AppDynamics, New Relic.
    • Poskytují komplexní nástroje pro monitorování, profilování a traceování.
  • Srovnání monitorování, profilování a traceování:
Nástroj Účel Úroveň detailu Overhead
Monitorování Obecný stav systému, trendy Nízký Nízký
Profilování Identifikace horkých míst (funkcí, alokací) Vysoký Střední
Traceování Cesta požadavku, interakce komponent Střední Střední/Vysoký
  • Provádění zátěžových testů před nasazením do produkce.
  • Použití Go Dog (plugin pro go test) pro benchmarking na úrovni funkcí/metod.
  • Sběr a analýza dumpů paměti (Heap Dumps) pro odhalení úniků paměti nebo nadměrné spotřeby.