Sobes.tech
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.
  • Profilozás:
    • A net/http/pprof csomag használata HTTP szolgáltatásokhoz.
    • A runtime/pprof csomag használata CPU, memória, blokkolások, goroutine profilok generálásához.
    • Profilok elemzése a go tool pprof eszkö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.
  • Trace:
    • A golang.org/x/net/trace csomag 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)
    }
    
  • 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 a Go Dog plugint 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.