Linux Sunucuda TCP Backlog Parametresi

Linux sunucularında TCP backlog parametresi, yüksek trafikli web sunucuları, veritabanı sistemleri veya API gateway'leri gibi ortamlarda kritik bir rol oynar.

Reklam Alanı

Linux sunucularında TCP backlog parametresi, yüksek trafikli web sunucuları, veritabanı sistemleri veya API gateway’leri gibi ortamlarda kritik bir rol oynar. Bu parametre, gelen TCP bağlantılarının kuyruk uzunluğunu belirleyerek sunucunun bağlantı taleplerini etkili bir şekilde yönetmesini sağlar. Özellikle SYN flood gibi DoS saldırılarına karşı koruma mekanizması olarak işlev görürken, aynı zamanda normal yük altında bağlantı reddini önler. Yanlış yapılandırılmış backlog değerleri, bağlantı kayıplarına veya performans düşüşlerine yol açabilir. Bu makalede, TCP backlog’un ne olduğunu, Linux’ta nasıl optimize edileceğini ve pratik uygulama adımlarını detaylı olarak ele alacağız. Sunucu yöneticileri için somut rehberlik sunarak, sistem kararlılığını artırmayı hedefliyoruz.

TCP Backlog Parametresinin Temel Kavramları

TCP backlog, kernel’in TCP bağlantılarını işleme kapasitesini tanımlayan bir mekanizmadır. Linux’ta iki ana parametre öne çıkar: net.core.somaxconn ve net.ipv4.tcp_max_syn_backlog. Somaxconn, tamamlanmış bağlantıların (ACCEPT kuyruğu) maksimum uzunluğunu belirlerken, tcp_max_syn_backlog ise SYN_RECV durumunda bekleyen yarı-açık bağlantıların kuyruğunu yönetir. Varsayılan değerler genellikle 128 veya 1024’tür, ancak modern sunucularda bu değerler yetersiz kalabilir. Yüksek concurrency’li uygulamalarda, örneğin Nginx veya Apache gibi web sunucularında, backlog’u artırmak bağlantı kabul oranını %20-50 oranında iyileştirebilir, ancak bellek tüketimini de artırır.

Bu parametrelerin etkileşimi kritik öneme sahiptir. Bir socket listen() çağrısında backlog argümanı belirtilir, ancak kernel bu değeri somaxconn ile sınırlar. SYN backlog ise TCP üç-way handshake sırasında SYN paketlerini tamponlar. Aşırı yükte, backlog dolduğunda yeni bağlantılar RST ile reddedilir, bu da kullanıcı deneyimini bozar. Uygulamalar backlog’u doğru ayarlamalıdır; örneğin Node.js veya Java sunucularında varsayılan 511 değeri çoğu zaman yetersizdir.

net.core.somaxconn Parametresi

net.core.somaxconn, sistem genelinde tüm socket’ler için ACCEPT kuyruğunun üst sınırını koyar. Varsayılan 128’dir, ancak bulut tabanlı yüksek trafikli sunucularda 4096 veya 8192’ye çıkarılması önerilir. Değeri değiştirmek için sysctl komutunu kullanın: sysctl -w net.core.somaxconn=4096. Bu değişiklik anlık olup, yeniden başlatmada kaybolur. Uygulamada, Nginx için worker_connections ile uyumlu hale getirin; örneğin worker_connections 10240 ve backlog 8192 kombinasyonu dengeli bir yapı sağlar. Bellek etkisi: Her bağlantı yaklaşık 2-4 KB bellek kullanır, yani 4096 backlog 16 MB ek yük getirir.

net.ipv4.tcp_max_syn_backlog Parametresi

tcp_max_syn_backlog, SYN_RECV kuyruğunu kontrol eder ve varsayılanı 256’dır. DDoS koruması için somaxconn’un yarısı kadar ayarlayın, örneğin 2048. Komut: sysctl -w net.ipv4.tcp_max_syn_backlog=2048. Bu, handshake tamamlanamayan bağlantıları hızlıca temizler. İzleme için ss -ltn state syn-recv komutuyla kuyruk doluluğunu kontrol edin. Pratikte, iptables ile SYN proxy entegre ederek bu değeri güçlendirin.

Linux Sunucularda TCP Backlog Yapılandırması

Yapılandırma iki aşamada yapılır: geçici ve kalıcı. Geçici değişiklikler test için idealdir, sysctl -w ile uygulanır. Kalıcı hale getirmek için /etc/sysctl.conf dosyasını düzenleyin ve sysctl -p ile yükleyin. Örnek konfigürasyon bloğu:

  • net.core.somaxconn = 4096
  • net.ipv4.tcp_max_syn_backlog = 2048
  • net.ipv4.tcp_syncookies = 1 (ek koruma için)

Bu ayarlar sonrası sunucuyu yeniden başlatın ve netstat -an | grep LISTEN ile doğrulayın. Uygulama seviyesinde, listen(socket, backlog) çağrısında somaxconn’u aşmamak için kodunuzu uyarlayın. Örneğin, C dilinde listen(fd, 4096); kullanın. Yüksek trafikli ortamlarda, bu ayarlar CPU ve bellek kullanımını %10-15 artırabilir, bu yüzden kapasite planlaması yapın.

Geçici Değişiklikler ve Test

Sistem yöneticileri, değişikliği uygulamadan önce yük testi yapmalıdır. ab veya wrk gibi araçlarla 1000+ bağlantı simüle edin: wrk -t12 -c400 -d30s http://localhost/. Sysctl ile ayarlayın, ss -lmn ile backlog’u izleyin. Değişiklik sonrası bağlantı başarı oranını loglayın. Bu yaklaşım, üretim öncesi riskleri minimize eder ve optimal değeri belirler. Tipik olarak, fiziksel sunucularda 65536’ya kadar çıkılabilir, ancak VM’lerde hipervizör limitlerine dikkat edin.

Kalıcı Yapılandırma ve Güvenlik Entegrasyonu

/etc/sysctl.conf’a ekleyin ve sysctl –system ile kalıcı kılın. Güvenlik için tcp_syncookies=1 etkinleştirin, bu SYN cookie’ler ile backlog’u bypass eder. Fail2ban veya iptables rate limiting ile entegre edin: iptables -A INPUT -p tcp –syn -m limit –limit 25/s –limit-burst 100 -j ACCEPT. Bu kombinasyon, gerçek trafiği korurken saldırıları engeller. Düzenli olarak /proc/net/sockstat ile istatistikleri inceleyin.

Performans İzleme ve Optimizasyon İpuçları

Backlog optimizasyonu sonrası sürekli izleme şarttır. ss -s veya netstat -s ile tcp_synq_overflows ve listen_overflows metriklerini takip edin. Prometheus + Node Exporter ile grafikler oluşturun. Aşırı dolulukta, net.core.netdev_max_backlog’u da artırın (varsayılan 1000). Uygulama loglarında TIME_WAIT durumlarını azaltmak için tcp_tw_reuse=1 düşünün. Pratik takeaway: Haftalık inceleme rutini kurun ve trafik piklerinde dinamik ayarlama script’leri yazın.

Sonuç olarak, TCP backlog parametresini doğru yönetmek, Linux sunucularınızın ölçeklenebilirliğini ve güvenilirliğini doğrudan etkiler. Bu rehberdeki adımları uygulayarak, bağlantı reddi sorunlarını minimize edebilir ve kullanıcı memnuniyetini artırabilirsiniz. Düzenli testler ve izleme ile sisteminizi proaktif tutun, böylece kurumsal düzeyde performans elde edin.

Yazar: Editör
İçerik: 655 kelime
Okuma Süresi: 5 dakika
Zaman: Bugün
Yayım: 25-03-2026
Güncelleme: 25-03-2026
Benzer İçerikler
Dijital Dönüşüm kategorisinden ilginize çekebilecek benzer içerikler