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).
- Použitie vstavaných balíkov:
- Profilovanie:
- Použitie balíka
net/http/pprofpre HTTP služby. - Použitie balíka
runtime/pprofna 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.
- Použitie balíka
- 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) } - Použitie balíka
- 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.