erdemovali.com / playground / yuksek-trafikte-rca-ve-otomatik-iyilesme
EN Versiyonu
Echo Support / SRE • • 5 dk

Kesinti Anında Kök Neden Analizi (RCA) ve Otomatik İyileşme (Self-Healing) Desenleri

Canlı sistemlerdeki kademeli arızaları (cascading failures) hızla izole etme, 5-Neden yöntemiyle kök nedene inme ve systemd/healtcheck tabanlı otomatik kurtarma mekanizmaları.

#sre #rca #incident-response #resilience #systemd

Semptom ile Kök Nedeni Ayırmak

Canlı üretim ortamlarında yaşanan kesintilerin büyük çoğunluğunda ilk görülen alarm (örneğin 502 Bad Gateway veya yüksek CPU kullanımı) arızanın kendisi değil, yalnızca bir semptomdur. Etkili bir Kök Neden Analizi (RCA), yangını söndürürken veri kaybı yaşatmadan arızanın ilk tetikleyici halkasını bulmayı hedefler.

Kademeli Arıza (Cascading Failure) Senaryosu

Tipik bir senaryoda dış API yanıt süresinin 120ms'den 2800ms'ye çıkması şu zincirleme etkiyi yaratır:

[ Yavaş Dış Servis ] 
       ↓
[ Worker Havuzu Dolar (Thread Starvation) ]
       ↓
[ Sağlık Kontrolleri (Healthcheck) Zaman Aşımına Uğrar ]
       ↓
[ Yük Dengeleyici Sağlıklı Düğümleri Devre Dışı Bırakır ]

Otomatik İyileşme (Self-Healing) Tasarımı

İnsan müdahalesine (MTTR) olan bağımlılığı azaltmak için üç katmanlı koruma uygulanmalıdır:

  1. Agresif Zaman Aşımı ve Devre Kesici (Circuit Breaker): Dış çağrılar asla ucu açık bırakılmamalı; hata oranı eşiği aşıldığında çağrılar anında kesilerek yerel önbellekten (graceful degradation) yanıt dönülmelidir.
  2. Bellek Sızıntılarına Karşı systemd Sınırları:
# /etc/systemd/system/app-worker.service.d/override.conf
[Service]
MemoryMax=2G
MemoryHigh=1750M
Restart=on-failure
RestartSec=3s
StartLimitIntervalSec=60
StartLimitBurst=4
  1. Yüzeysel Olmayan Sağlık Kontrolleri: /healthz uç noktası sadece 200 OK dönmemeli; kritik yerel bağımlılıkları (disk yazılabilirliği ve soket durumu) kontrol ederken, dış servis arızalarında tüm düğümü düşürmeyecek şekilde ayrıştırılmalıdır (liveness vs readiness).