Middle+
Mik a módszerek a teljesítményproblémák azonosítására és diagnosztizálására a gyártásban?
sobes.tech MI
Válasz az MI-től
- Metrikák figyelése:
- Beépített csomagok használata:
expvar(egyszerű kulcs-érték metrikák),runtime(GC statisztikák, goroutine-ok stb.). - Harmadik fél könyvtárai: Prometheus, Datadog, New Relic.
- RPS, kérés késleltetés, hibák, erőforrás-felhasználás (CPU, RAM) nyomon követése.
- Beépített csomagok használata:
- Profilozás:
- A
net/http/pprofcsomag használata HTTP szolgáltatásokhoz. - A
runtime/pprofcsomag használata CPU, memória, blokkolások, goroutine profilok generálásához. - Profilok elemzése a
go tool pprofeszközzel.
# Példa a go tool pprof használatára go tool pprof http://localhost:6060/debug/pprof/heap # Heap profil- Profil típusok: CPU, Heap, Goroutine, Blocking, Mutex, ThreadCreate, Trace.
- A
- Trace:
- A
golang.org/x/net/tracecsomag használata. - A OpenTracing/OpenTelemetry használata elosztott trace-hez.
- A kérés útjának követése a rendszerben, szűk keresztmetszetek azonosítása a szolgáltatások közötti interakcióban.
// Trace használatának példája import "golang.org/x/net/trace" func handleRequest(w http.ResponseWriter, r *http.Request) { tr := trace.New("szolgaltatasom", "handleRequest") defer tr.Finish() // Események naplózása a trace-ben tr.LazyLog("Kérés feldolgozásának kezdete", false) // ... kérés feldolgozási logika ... tr.LazyLog("Kérés feldolgozás vége", false) } - A
- Log elemzés:
- Logok gyűjtése és központi tárolása (ELK Stack, Loki/Grafana).
- Anomáliák, hibák, lassú kérések keresése a logokban.
- A logok és trace összekapcsolása az események összekapcsolásához.
- Szakkifejlesztett APM megoldások használata:
- Dynatrace, AppDynamics, New Relic.
- Átfogó eszközöket kínálnak a monitorozáshoz, profilozáshoz és trace-hez.
- A monitorozás, profilozás és trace összehasonlítása:
| Eszköz | Cél | Részletességi szint | Overhead |
|---|---|---|---|
| Monitorozás | Általános rendszerállapot, trendek | Alacsony | Alacsony |
| Profilozás | Forró pontok (függvények, allokációk) azonosítása | Magas | Közepes |
| Trace | Kérés útja, komponensek közötti interakciók | Közepes | Közepes/Nagy |
- Terheléses tesztelést végezzen a gyártásba helyezés előtt.
- A
go test-hez aGo Dogplugint használva funkciók/metódus szintű benchmarking. - Memóriadumpokat (Heap Dumps) gyűjtsön és elemezzen, hogy memória szivárgásokat vagy túlzott fogyasztást azonosítson.