Asenkron Platformlarda Performans Ölçümü: Nerede Tıkanır, Nasıl Tespit Edilir?

  • architecture
  • asynchronous
  • performance
  • devops

Asenkron Platformlarda Performans Ölçümü: Nerede Tıkanır, Nasıl Tespit Edilir?

Asenkron yapılar hız, dayanıklılık ve ölçeklenebilirlik sunar. Ama doğru ölçülmezse, nerede tıkandığını anlamak çok zorlaşır.

Bu yazıda asenkron bir platformda performansın gerçekten nerede kaybolduğunu, hangi noktalarda boğaz oluştuğunu, hangi metrikleri takip etmek gerektiğini en sade hâliyle anlatıyorum.

Modern bulut mimarisi kapak görseli

1. Asenkron Sistemlerde Performans Neden Farklı Ölçülür?

Senkron yapıdaki performans ölçümü basittir:

  • request → response
  • latency
  • timeout
  • CPU / RAM

Ama asenkron platformda durum böyle değil. Neden?

Çünkü zincir şöyle çalışıyor:

flowchart LR A[Producer] --> B((Queue)) B --> C[Worker] C --> D((Event Store)) D --> E[Next Worker]

Performansı belirleyen şey:

  • mesaj kuyruğu
  • worker tüketim hızı
  • concurrency
  • batch size
  • scaling politikaları
  • I/O gecikmeleri
  • event akış sırası

Yani “istek süresi” değil, akışın tamamı önemli.

2. Performansı Etkileyen 6 Kritik Alan

Asenkron bir platformdaki tıkanmalar genelde 6 ana yerde olur:

1) Producer’ın üretim hızı

Event çok hızlı üretiliyorsa, queue şişer.

2) Queue’nun dolma hızı

Back-pressure başlamışsa, sorun oradadır.

3) Worker Tüketim Hızı

En kritik bölge burasıdır.

4) Dış sistemler

API, DB, S3, SMTP, external gateway → hepsi latency yaratır.

5) I/O yükü

Disk, network, DNS lookup, TLS handshake…

6) Scaling stratejisi

Hatalı scale-up → tıkanıklık
Aşırı scale-up → maliyet

3. Nerede Tıkandığını Tespit Etmek için Altın Gösterge: Queue Lag

“Queue Lag” şu demektir:

Mesaj üretildiği andan işlenene kadar geçen süre.

Bu değer yükseliyorsa:

  • worker yetişemiyor
  • sistem kapasitesi düşük
  • dış sistem yavaş
  • concurrency az

Örnek Lag:

flowchart LR A((Message Created)) -->|5 minutes| B((Message Processed))

Lag 5 dakikaysa → sistem 5 dakika geriden geliyor demektir.

Lag = 0–2 saniye → sağlıklı
Lag = 10+ saniye → dikkat
Lag = 1+ dakika → tıkanıklık
Lag = 10+ dakika → yangın var

4. “Worker Throughput” En Kritik Metriktir

Worker’ın saniyede işlediği mesaj sayısıdır.

Basit formül:

throughput = total messages processed / total time in seconds

Throughput düşüyorsa:

  • CPU düşük olabilir
  • DB yavaşlamış olabilir
  • worker tek tek iş yapıyor olabilir
  • dış servis latency yaratıyor olabilir
  • batch size yanlış olabilir

Bu metrik, nereden başlaman gerektiğini söyler.

5. Tıkanıklık Analizi Nasıl Yapılır?

Bunu bir yol haritasıyla çok net anlayabiliriz:

flowchart TD A[Queue Lag Artıyor] --> B{Producer mı hızlı?} B -->|Evet| C[Rate Limit + Back Pressure] B -->|Hayır| D{Worker mı yavaş?} D -->|Evet| E[Concurrency artır, batch ayarla] D -->|Hayır| F{External Service mı yavaş?} F -->|Evet| G[Timeout, retry, circuit breaker] F -->|Hayır| H[Database / I/O Sorunları]

Bu diagram sıkışıklığı çözmek için doğrudan yol gösterir.

6. Asenkron Sistemde Ölçülmesi Gereken Metrikler Listesi

Queue Metrikleri

  • Queue size
  • Queue lag
  • Produce rate
  • Consume rate
  • Retry & DLQ sayısı

Worker Metrikleri

  • Throughput
  • CPU / RAM
  • Concurrency
  • Batch size etkisi

Event Akış Metrikleri

  • Adım-adım işlem süreleri
  • End-to-end latency
  • Fail / success rate

Dış Sistem Metrikleri

  • API latency
  • Timeout sayıları
  • Connection error oranı
  • Rate limit hataları

Sistem Metrikleri

  • Disk IO
  • Network throughput
  • Container restart sayıları

Asenkron mimaride “sadece CPU ve RAM’e bakmak” hiçbir şeyi çözmez.

7. Performans Optimizasyonu İçin 7 Pratik Yöntem

1) Batch tüketimini etkinleştir

Tek tek işlemek yerine paket işlemek performansı uçurur.

2) Concurrency’i kontrollü artır

Her fazla worker → daha çok throughput, ama daha çok load.

3) Back-pressure uygulayın

Producer çok hızlıysa, sistemi boğmasın.

4) Circuit breaker kullanın

Yavaşlayan external API tüm akışı tıkamasın.

5) Idempotent tasarlayın

Retry yapabilmek için.

6) Queue + Logging + Tracing üçlemesini entegre edin

Üçü birlikte kullanılınca nerede tıkandığı 10 saniyede görünür.

7) “Hot Path” optimizasyonu yapın

Flow’un en sık çalışan bölümünü optimize etmek → en büyük kazanım.

8. Asenkron Sistemlerde Performansı Boğan 5 Gizli Sorun

Bu sorunlar genelde gözden kaçar:

1) DNS lookup latency

Her istek 200–300ms gecikmeye sebep olabilir.

2) Gereksiz JSON serialize/deserialize

Saniye başına binlerce işlemde etkisi büyüktür.

3) Küçük batch’ler

Batch size = 1 → throughput katledilir.

4) Aşırı logging

I/O yoğunluğu sistemin kalbini yavaşlatır.

5) “Senkron bir noktaya bağlı asenkron yapı”

Asenkron sistemin içinde küçük bir senkron darboğaz bile tüm akışı öldürür.

9. Performans Ölçümünde En Büyük Tuzak: Yanlış Noktaya Bakmak

Asenkron yapılarda geliştiriciler çoğunlukla:

  • CPU usage
  • memory
  • thread sayısı

gibi klasik metriklere bakar. Ama bu metriklerin çoğu doymuş sistemde tamamen faydasızdır.

Asıl sorun şunlardır:

  • sıra bekleyen mesaj
  • düşük tüketim hızı
  • yavaş dış servis
  • concurrency limiti
  • küçük batch

Yani problem kodda değil — akış zincirindedir.

10. Sonuç: Asenkron Performans, Parçaların Değil Akışın Performansıdır

Asenkron platformların en büyük avantajı:

  • yükü dağıtması
  • sistemi ayakta tutması
  • ölçeklenebilir olması

En büyük dezavantajı:

  • doğru ölçülmezse sorunları gizlemesidir.
  • tıkanma noktaları loglarda görünmez.
  • akış bir yerde yavaşlar ama fark edilmez.

Bu yüzden asenkron sistemlerde şu üç şeyi çok iyi takip etmek gerekir:

✔ Queue lag

✔ Worker throughput

✔ Step-by-step latency (uçtan uca takip)

Bunlara bakınca sorun neden, nerede, hangi hızda, hangi koşulda ortaya çıkıyor çok net görünür.