Linux sunucularında TCP tuning, ağ performansını optimize etmek için kritik bir adımdır.
Linux sunucularında 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ı uygulamalar gibi ortamlarda, varsayılan TCP ayarları yetersiz kalabilir. Bu ayarlar, bağlantı kurma sürelerini kısaltır, kaynak tüketimini azaltır ve DDoS saldırılarına karşı direnci artırır. Bu makalede, kurumsal ortamlar için pratik TCP tuning tekniklerini adım adım inceleyeceğiz. Sunucunuzun throughput’ını artırarak, gecikmeleri minimize edecek somut ayarlar ve uygulama yöntemleri paylaşacağız.
TCP tuning, Linux çekirdeğinin ağ yığınına özgü parametreleri sysctl aracılığıyla yapılandırmayı içerir. Bu parametreler, /proc/sys/net/ dizini altında bulunur ve kalıcı hale getirmek için /etc/sysctl.conf dosyasını düzenlemek en iyi yaklaşımdır. Örneğin, yüksek bağlantı hacimli sunucularda bağlantı kuyruklarını genişletmek, SYN backlog’u yönetmek ve zaman aşımı değerlerini kısaltmak standart prosedürlerdir. Bu ayarlar, sunucunun CPU ve bellek kullanımını dengelerken, ağ bant genişliğini maksimize eder.
Başlamadan önce, mevcut ayarları incelemek için sysctl -a | grep tcp komutunu çalıştırın. Bu, mevcut konfigürasyonu anlamanıza yardımcı olur. Ardından, değişiklikleri test etmek için geçici olarak sysctl -w net.ipv4.tcp_xxx=değer ile uygulayın ve kalıcılaştırmak için sysctl.conf’a ekleyin. Her değişiklik sonrası sysctl -p ile yükleyin.
net.core.somaxconn parametresi, dinleme soketlerindeki maksimum bekleyen bağlantı sayısını belirler. Varsayılan 128 değeri, yoğun trafik için yetersizdir; 4096 veya 8192’ye çıkararak backlog’u genişletin. Benzer şekilde, net.ipv4.tcp_max_syn_backlog=8192 ile SYN kuyruğunu artırın. Bu ayarlar, bağlantı reddini önler ve sunucunun yük altında stabil kalmasını sağlar. Uygulama örneği: sysctl.conf’a net.core.somaxconn = 8192 ve net.ipv4.tcp_max_syn_backlog = 8192 satırlarını ekleyin, ardından yeniden yükleyin.
DDoS saldırılarına karşı net.ipv4.tcp_syncookies=1 etkinleştirin. Bu, SYN çerezleri kullanarak sahte bağlantıları filtreler ve backlog’u korur. Ek olarak, net.ipv4.tcp_synack_retries=2 ile SYN-ACK yeniden denemelerini azaltın. Kurumsal sunucularda bu ayar, kaynak israfını önler. Test için hping3 --syn -p 80 -i u1 sunucu_ip ile simüle edin ve ss -s ile kuyrukları izleyin.
Zaman aşımı parametreleri, kullanılmayan bağlantıları hızlı temizleyerek kaynakları serbest bırakır. net.ipv4.tcp_fin_timeout=15 saniyeye indirin; bu, TIME_WAIT durumundaki soketleri kısaltır. net.ipv4.tcp_tw_reuse=1 ile yeniden kullanılabilir TIME_WAIT soketleri etkinleştirin, ancak dikkatli olun zira yanlış kullanım veri kaybına yol açabilir. Yüksek hacimli HTTP sunucuları için net.ipv4.tcp_keepalive_time=300, tcp_keepalive_intvl=60 ve tcp_keepalive_probes=5 kombinasyonu idealdir. Bu ayarlar, idle bağlantıları yönetir ve bellek sızıntısını önler.
Bu optimizasyonlar, Nginx veya Apache gibi web sunucularında %20-30 throughput artışı sağlayabilir. Değişiklikleri staging ortamında test edin.
TCP keepalive ayarları, uzun süreli bağlantılarda (örneğin SSH veya veritabanı) bağlantı sağlığını korur. Varsayılan 7200 saniye (2 saat) yerine 300 saniyeye çekmek, hızlı algılama sağlar. Uygulamada: sysctl.conf’a ekleyin ve ss -tan | grep TIME-WAIT ile öncesi-sonrası karşılaştırın. Bu, sunucuda biriken 10.000+ TIME_WAIT soketini %50 azaltabilir.
Tuning’i uygulamak için /etc/sysctl.conf dosyasını nano veya vim ile düzenleyin, değişiklikleri kaydedin ve sysctl -p çalıştırın. Yeniden başlatma gerekmez. İzleme için netstat veya modern ss aracını kullanın: ss -s ile genel istatistikleri, ss -ltn ile dinleme soketlerini görün. tcpdump ile trafik analizi yapın: tcpdump -i any port 80 -w capture.pcap. Wireshark ile inceleyin.
Performansı ölçmek için iperf3 gibi araçlar idealdir: Sunucu tarafı iperf3 -s, istemci iperf3 -c sunucu_ip -t 60. Öncesi-sonrası benchmark alın. Ayrıca, sar veya nload ile ağ yükünü takip edin. Tuning sonrası CPU kullanımını top ile, bellek kullanımını free -h ile doğrulayın. Kurumsal olarak, Ansible gibi araçlarla birden fazla sunucuya dağıtın.
Sonuç olarak, Linux sunucuda TCP tuning, sistematik bir yaklaşımla uygulandığında ağ verimliliğini dramatik artırır. Bu rehberdeki adımları izleyerek, kendi ortamınıza uyarlayın ve düzenli izleme ile ince ayar yapın. Düzenli bakım, kesintisiz hizmet için vazgeçilmezdir.