Production'da bir API aniden yavaşladı ve hata oranı arttı. Sorunu nasıl teşhis eder ve çözersiniz?

Cevap

Bu bir davranışsal/senaryo sorusudur; mülakatçı sistematik düşünmenizi ve önceliklerinizi görmek ister. Öncelik her zaman: önce etkiyi azalt, sonra kök nedeni bul.

1. Etkiyi ve kapsamı belirle

  • Tüm endpoint'ler mi, yalnızca biri mi? Tüm kullanıcılar mı, bir bölge veya müşteri mi?
  • Dashboard'da RED metrikleri: istek hızı, hata oranı, p95/p99 gecikme. Sorun ne zaman başladı?
  • Incident kanalını açın, durumu paydaşlarla paylaşın.

2. Son değişiklikleri kontrol et

Sorunların büyük kısmı bir değişiklikle başlar: deploy, konfigürasyon değişikliği, feature flag, migration, trafik artışı, bağımlı servisin deploy'u. Zaman çizelgesi eşleşiyorsa önce rollback, sonra araştırma.

3. Darboğazı daralt

  • Trace'ler: yavaş isteklerde zaman hangi span'da harcanıyor? DB, dış API, cache?
  • Kaynaklar: CPU, bellek, GC pause, thread/connection pool doluluğu, pod restart'ları (OOMKilled), CPU throttling.
  • Veritabanı: yavaş sorgu logları, aktif sorgular ve kilitler (pg_stat_activity), connection sayısı, replication lag.
  • Bağımlılıklar: downstream servisin gecikmesi arttıysa timeout'larınız ve retry'larınız yükü katlıyor olabilir.
  • Log'lar: yeni hata tipleri, stack trace'ler.

4. Kısa vadeli önlemler

Rollback, replica/pod sayısını artırmak, sorunlu feature flag'i kapatmak, rate limiting, bozuk bağımlılık için circuit breaker açmak, pahalı bir endpoint'i geçici olarak devre dışı bırakmak.

5. Kalıcı çözüm ve postmortem

  • Kök nedeni düzeltin (ör. eksik index, N+1, connection leak).
  • Blameless postmortem yazın: zaman çizelgesi, kök neden, neden daha önce yakalanmadı, aksiyonlar (alarm, test, yük testi).

Örnek kök neden zinciri

Yeni deploy -> listeleme endpoint'ine eklenen filtre index kullanmıyor
-> sorgu 20ms'den 2sn'ye çıkıyor -> connection pool doluyor
-> diğer endpoint'ler de bağlantı bekleyip timeout oluyor -> hata oranı artıyor
  1. Mesaj kuyruğu (RabbitMQ, Kafka) ne zaman kullanılır?ZorSistem TasarımıBackend
  2. Monolith ile mikroservis mimarisi arasındaki fark nedir? Mikroservislere ne zaman geçilmeli?ZorSistem TasarımıBackend
  3. CAP teoremi nedir? Gerçek sistemlerde nasıl yorumlanır?ZorSistem TasarımıBackend
  4. Dikey ve yatay ölçekleme arasındaki fark nedir?KolaySistem TasarımıFull Stack
  5. Hangi cache stratejilerini biliyorsunuz?OrtaSistem TasarımıFull Stack
  6. REST ile GraphQL arasındaki farklar nelerdir?OrtaSistem TasarımıFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle