Linux Sunucuda TCP Tuning

Linux sunucularda TCP tuning, ağ performansını optimize etmek için kritik bir adımdır.

Reklam Alanı

Linux sunucularda TCP tuning, ağ performansını optimize etmek için kritik bir adımdır. Yüksek trafikli web sunucuları, veritabanı kümeleri veya bulut tabanlı uygulamalarda, varsayılan TCP/IP yığın ayarları yetersiz kalabilir. Bu ayarlar, bağlantı kurma hızını, veri aktarım verimliliğini ve kaynak kullanımını doğrudan etkiler. Etkili bir tuning ile gecikmeleri minimize edebilir, bağlantı reddetme oranlarını düşürebilir ve sunucu kapasitesini artırabilirsiniz. Bu makalede, kurumsal ortamlar için pratik TCP tuning tekniklerini adım adım ele alacağız; temel parametrelerden uygulamaya ve izlemeye kadar kapsamlı bir rehber sunacağız.

Temel TCP Parametreleri ve Etkileri

Linux kernel’ındaki TCP parametreleri, /proc/sys/net/ dizini altında sysctl aracılığıyla yönetilir. Bu parametreler, bağlantı kuyruklarını, timeout’ları ve buffer boyutlarını kontrol eder. Yüksek yük altında sunucunuzun SYN flood saldırılarına karşı dirençli olmasını sağlamak ve TIME_WAIT durumundaki soketleri hızlı temizlemek için bu ayarları ince ayarlamak esastır. Örneğin, yoğun trafikli bir sunucuda varsayılan değerler yetersiz kalır ve bağlantı kayıplarına yol açar.

SYN Backlog ve Somaxconn Ayarları

net.ipv4.tcp_max_syn_backlog ve net.core.somaxconn parametreleri, bekleyen SYN isteklerini yönetir. tcp_max_syn_backlog varsayılan olarak 128’dir; bunu 2048 veya daha yükseğe çıkararak sunucunuzun eşzamanlı bağlantı taleplerini daha iyi karşılamasını sağlayabilirsiniz. somaxconn ise listen() sistem çağrısındaki backlog limitini belirler, tipik olarak 128’dir. Kurumsal sunucularda bunları 4096’ya ayarlayın: sysctl -w net.ipv4.tcp_max_syn_backlog=2048 ve sysctl -w net.core.somaxconn=4096. Bu değişiklik, Apache veya Nginx gibi sunucularda bağlantı reddetmelerini %50’ye varan oranda azaltabilir, ancak fiziksel bellek sınırlarını göz önünde bulundurun.

TIME_WAIT ve FIN_TIMEOUT Optimizasyonu

TIME_WAIT soketleri, bağlantı kapanışından sonra kaynakları bloke eder. net.ipv4.tcp_tw_reuse=1 etkinleştirerek yeniden kullanılabilir soketleri teşvik edin; net.ipv4.tcp_fin_timeout’u 30 saniyeden 15’e düşürün. Bu ayarlar, kısa süreli bağlantılarda (örneğin HTTP/1.1) etkili olur. Uygulamada: sysctl -w net.ipv4.tcp_tw_reuse=1; sysctl -w net.ipv4.tcp_fin_timeout=15. Dikkat: tcp_tw_reuse, NAT ortamlarında sorun yaratabilir, bu yüzden test edin. Bu tuning, saniyede binlerce bağlantı işleyen sunucularda soket tükenmesini önler.

Buffer Boyutları: RMEM ve WMEM

TCP receive ve send buffer’ları, net.ipv4.tcp_rmem ve net.ipv4.tcp_wmem ile ayarlanır. Varsayılan “4096 87380 6291456” değerini “4096 87380 8388608″ olarak genişletin. Yüksek bant genişliğinde (1Gbps+) faydalıdır: sysctl -w net.ipv4.tcp_rmem=”4096 87380 8388608”. Bu, throughput’u artırır ve CPU yükünü dengeler. Gigabit ağlar için min/ default/ max değerlerini RAM’inize göre ölçekleyin, örneğin 16GB RAM’li sunucuda max 16MB’ye çıkarın.

TCP Parametrelerini Kalıcılaştırma ve Uygulama Adımları

Geçici değişiklikler sysctl -w ile yapılır, ancak yeniden başlatmada kaybolur. Kalıcı hale getirmek için /etc/sysctl.conf dosyasını düzenleyin ve sysctl -p ile yükleyin. Kurumsal ortamda, bu ayarları test sunucusunda doğrulayın, ardından production’a taşıyın. Adım adım süreç: 1) Mevcut değerleri sysctl -a | grep tcp ile listeleyin. 2) Değişiklikleri conf dosyasına ekleyin. 3) sysctl -p uygulayın. 4) Sunucuyu yeniden başlatmadan ss -tlnp ile bağlantıları izleyin. Bu yöntem, downtime olmadan tuning sağlar.

  1. /etc/sysctl.conf’u nano veya vi ile açın.
  2. Satır ekleyin: net.core.somaxconn = 4096
  3. sysctl -p komutunu çalıştırın.
  4. Değişiklikleri doğrulayın: sysctl net.core.somaxconn

Ek olarak, net.ipv4.tcp_syncookies=1’i etkinleştirerek SYN flood koruması ekleyin. Bu, ekstra bellek kullanmadan sahte SYN’leri reddeder. Uygulamadan sonra, yük testi araçları gibi ab (Apache Benchmark) ile 1000 bağlantı simüle edin ve iyileşmeyi ölçün.

Performans İzleme ve İyileştirme Stratejileri

İzleme Araçları ve Komutlar

Tuning sonrası etkinliği ss, netstat ve sar gibi araçlarla takip edin. ss -s özeti bağlantı durumlarını gösterir; ss -tan | grep TIME-WAIT ile TIME_WAIT sayısını izleyin. sar -n DEV 1 5 ağ istatistiklerini saniyede raporlar. Prometheus ve Grafana entegrasyonuyla kurumsal dashboard’lar oluşturun. Düzenli izleme, parametreleri dinamik ayarlamanıza olanak tanır; örneğin TIME_WAIT >10k ise fin_timeout’u kısaltın. Bu araçlar, bottleneck’ları erken tespit eder ve proaktif yönetim sağlar.

Test Senaryoları ve En İyi Uygulamalar

Yük testi için Apache Bench veya wrk kullanın: wrk -t12 -c400 -d30s http://localhost/. Bu, tuning öncesi/sonrası karşılaştırması yapar. En iyi uygulamalar: Ayarları hardware’e göre uyarlayın (örneğin multi-core CPU’larda net.core.netdev_max_backlog=3000). Günlük log’ları /proc/net/sockstat ile entegre edin. Kurumsal olarak, Ansible playbook’ları ile fleet-wide tuning uygulayın. Sürekli izleme ile %20-30 performans artışı elde edin.

Sonuç olarak, Linux sunucuda TCP tuning, sistematik bir yaklaşım gerektirir: parametreleri anlayın, test edin, uygulayın ve izleyin. Bu rehberdeki adımları izleyerek, sunucularınızın ağ kapasitesini maksimize edebilir, SLA’larınızı karşılayabilir ve operasyonel verimliliği artırabilirsiniz. Düzenli inceleme ve uyarlama ile uzun vadeli kazanımlar elde edeceksiniz.

Kategori: Genel
Yazar: Medyagen
İçerik: 612 kelime
Okuma Süresi: 5 dakika
Zaman: Bugün
Yayım: 26-02-2026
Güncelleme: 26-02-2026