Tahmin etmeyin — önce ölçün. Yavaşlık istemci, ağ, sunucu veya veritabanından gelebilir. Metodolojik bir yaklaşım zamanın nereye gittiğini bulur, sonra rastgele optimizasyon yerine en büyük katkıyı düzeltir.
Tahmin etmeyin — önce ölçün. Yavaşlık istemci, ağ, sunucu veya veritabanından gelebilir. Metodolojik bir yaklaşım zamanın nereye gittiğini bulur, sonra rastgele optimizasyon yerine en büyük katkıyı düzeltir.
1. MEASURE → where is the time spent? client render, network, server, DB?
2. REPRODUCE → confirm it reliably (same endpoint, payload, user)
3. TRACE → use APM/distributed traces to find the slow span
4. CHECK RECENT CHANGES → deploys, config, traffic, data growth
5. ISOLATE → layer by layer, narrow to one component
6. FIX the biggest contributor → re-measure to confirm
Toplam tutarı bölmek için tarayıcı Network/Performance sekmesini ve sunucu timing kularını kullanın. Yararlı bir ayrıntı:
Total 1200ms =
DNS/connect 20ms
server TTFB 900ms ← the bottleneck is server-side
download 80ms
client render 200ms
Ortalamalara değil, yüzdelik değerlere bakın: p50 (tipik kullanıcı) vs p99 (en kötü durum). Hızlı bir p50, yavaş bir p99 ile aralıklı sorunları işaret eder — kilit çekişmesi, soğuk önbellekler, yavaş DB kopyası veya GC duraklamaları — düzgün bir sorun değil.
APM araçları (izler) zamanın bir istek içinde tam olarak nereye gittiğini gösterir:
GET /orders 950ms
├─ auth check 10ms
├─ SELECT orders 30ms
└─ loop: SELECT user per order 900ms ← N+1 query, the real cause
İz doğrudan suçlu çağrıya işaret eder. Ardından son değişiklikleri kontrol edin — bir dağıtım, eksik bir dizin veya 10x veri büyümesi genellikle ani bir gerilemeyi açıklar.
Tahmin etmek yanlış katmanı optimize etmekte saatleri boşa harcadı. Önce ölçmek, yavaş span'i izlemek ve p50 vs p99'a bakmak belirsiz bir "yavaş" durumunu belirli, düzeltilebilir bir nedene dönüştürür — ve yeniden ölçmek düzeltmenin gerçekten işe yaradığını kanıtlar.