Sobes.tech
Middle+

Üretimde performans sorunlarının tanımlanması ve teşhis edilmesi için yöntemler nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

  • Metriğin İzlenmesi:
    • Yerleşik paketlerin kullanımı: expvar (basit anahtar-değer metrikleri), runtime (GC istatistikleri, goroutine ve diğerleri).
    • Üçüncü taraf kütüphaneler: Prometheus, Datadog, New Relic.
    • RPS, istek gecikmeleri, hatalar, kaynak kullanımı (CPU, RAM) takibi.
  • Profil oluşturma:
    • HTTP servisleri için net/http/pprof paketinin kullanımı.
    • CPU, bellek, kilitler, goroutine profilleri oluşturmak için runtime/pprof paketinin kullanımı.
    • Profilleri go tool pprof aracıyla analiz etme.
    # go tool pprof kullanım örneği
    go tool pprof http://localhost:6060/debug/pprof/heap  # Heap profili
    
    • Profil türleri: CPU, Heap, Goroutine, Blocking, Mutex, ThreadCreate, Trace.
  • İzleme:
    • golang.org/x/net/trace paketinin kullanımı.
    • Dağıtılmış izleme için OpenTracing/OpenTelemetry kullanımı.
    • Sistem içindeki istek yolunu izleme, servisler arasındaki darboğazları tespit etme.
    // trace kullanımı örneği
    import "golang.org/x/net/trace"
    
    func handleRequest(w http.ResponseWriter, r *http.Request) {
        tr := trace.New("benim_servisim", "handleRequest")
        defer tr.Finish()
    
        // Olayların izlenmesi
        tr.LazyLog("İstek işleme başlatıldı", false)
    
        // ... istek işleme mantığı ...
    
        tr.LazyLog("İstek işleme tamamlandı", false)
    }
    
  • Log analizi:
    • Logların toplanması ve merkezi depolanması (ELK Stack, Loki/Grafana).
    • Loglarda anormallik, hata, yavaş istek arama.
    • Logların izleme ile entegrasyonu, olayların bağlanması.
  • Uzmanlaşmış APM çözümleri kullanımı:
    • Dynatrace, AppDynamics, New Relic.
    • İzleme, profil oluşturma ve izleme için kapsamlı araçlar sağlarlar.
  • İzleme, profil oluşturma ve izleme karşılaştırması:
Araç Amaç Detay Seviyesi Overhead
İzleme Sistem durumu, eğilimler Düşük Düşük
Profil oluşturma Sıcak noktaları (fonksiyonlar, tahsisler) belirleme Yüksek Orta
İzleme (Tracing) İstek yolu, bileşenler arası etkileşim Orta Orta/Yüksek
  • Üretime geçmeden önce yük testi yapma.
  • go test için eklenti olan Go Dog kullanarak fonksiyonlar/metodlar seviyesinde benchmark yapma.
  • Bellek dökümleri (Heap Dumps) toplayıp analiz ederek bellek sızıntılarını veya aşırı kullanımı tespit etme.