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).
- Korišćenje ugrađenih paketa:
- Profilisanje:
- Korišćenje paketa
net/http/pprofza HTTP servise. - Korišćenje paketa
runtime/pprofza 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.
- Korišćenje paketa
- 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) } - Korišćenje paketa
- 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.