⚡ÖZET VE TEKNİK CEVAP
Bir istemci sunucuya (Nginx, Envoy, Node.js) TCP bağlantısı başlattığında, Linux çekirdeği bu süreci iki ayrı çekirdek kuyruğunda yönetir:
SYN Kuyruğu (3'lü el sıkışmada istemcinin son ACK'sini bekleyen yarı açık bağlantılar) ve
Accept/Listen Dinleme Kuyruğu (el sıkışması bitmiş ancak uygulamanın accept() çağrısıyla henüz almadığı hazır bağlantılar). Varsayılan olarak Linux eski çekirdek ayarlarıyla gelir (somaxconn = 128 ve tcp_max_syn_backlog = 128). Ani bir trafik patlamasında (ör. saniyede 5.000 istek), uygulama bu bağlantıları yeterince hızlı çekemez. Listen kuyruğu dolduğu anda Linux çekirdeği gelen yeni TCP SYN paketlerini uygulamaya hiçbir hata vermeden SESSİZCE DÜŞÜRÜR (drop). İstemciler 3-15 saniyelik bağlantı zaman aşımı yaşarken sunucu loglarında tek bir hata bile görünmez.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Bir biletleme sitesinde bilet satış anında kullanıcılar 3,1 saniyelik garip bağlantı gecikmeleri yaşıyordu. Sunucu CPU'su %30'du ve sıfır 5xx hatası vardı. netstat -s çalıştırıldığında somaxconn = 128 olduğu için dakikada 14.000 SYN paketinin çekirdek tarafından düşürüldüğü anlaşıldı. SRE ekibi net.core.somaxconn=65535 ve Nginx backlog=65535 ayarlarını yaptı. Düşen paket sayısı anında sıfıra indi ve 20.000 eşzamanlı bağlantı altında gecikme 3.100 ms'den 4 ms'ye düştü.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaLinux'ta bir TCP bağlantısı kurulurken görev alan iki çekirdek kuyruğu nedir?
Düşen TCP SYN paketleri istemci bağlantılarında neden 3 saniyelik bir gecikmeye yol açar?
Linux TCP SYN ve Dinleme (Listen) Kuyruğu Taşması ve Sessiz Paket Düşmeleri — Sıkça Sorulan Sorular
Linux sunucunuzun o anda SYN paketlerini düşürüp düşürmediğini nasıl kontrol edebilirsiniz?
`netstat -s | grep -i listen` çalıştırarak veya `ss -lnt` ile dinleme yapan portların Send-Q / Recv-Q doluluk oranlarına bakarak.
Uygulamadaki `listen(backlog)` parametresi ile `net.core.somaxconn` arasındaki ilişki nedir?
Gerçek kuyruk boyutu ikisinin minimumudur: $min( ext{uygulama_backlog}, ext{somaxconn})$. İkisinin de birlikte yükseltilmesi şarttır.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
Linux manages TCP connection establishment via the SYN Queue and Accept/Listen Queue.
- ▸
Default
somaxconn = 128causes silent TCP drops during modest traffic surges. - ▸
Dropped SYNs trigger 1-3 second client-side TCP retransmission delays.
- ▸
Tune both
net.core.somaxconnand applicationlisten(backlog)to 65535.
Yaygın Yanılgılar
- ✗
Yanılgı: Application servers will log an error when the TCP listen queue overflows (Gerçek: The kernel drops packets before the application is ever aware).
- ✗
Yanılgı: Setting
somaxconnin sysctl is enough (Gerçek: Application server configurations like Nginx/Gunicorn must also specify matching backlog sizes).
Karar Kılavuzu & Önceliklendirme
Set net.core.somaxconn = 65535 and net.ipv4.tcp_max_syn_backlog = 65535 on all API servers. Monitor netstat -s drop counters in Datadog/Prometheus as a critical networking SLI.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL_DOCUMENTATION]Cloudflare Engineering: How TCP Backlog and Syn Cookies Work Under Heavy Load— Marek Majkowski / Cloudflare Blog
