Linux Kernel Tuning: sysctl ile Performans ve Güvenlik Optimizasyonu

Linux Kernel Tuning: sysctl ile Performans ve Güvenlik Optimizasyonu - Corelux
Paylaş:

Linux Kernel Tuning: sysctl ile Performans ve Güvenlik Optimizasyonu

Son Güncelleme: Nisan 2026

Kernel tuning (çekirdek ayarları) sunucu performansı ve güvenlik için kritik öneme sahiptir. Bu rehberde sysctl ile ağ (network), bellek (memory), dosya sistemi (filesystem) ve güvenlik odaklı kernel parametrelerini nasıl yöneteceğiniz, test edeceğiniz ve otomasyona sokacağınız adım adım gösterilecektir.

İçindekiler

Kernel Tuning ve sysctl Nedir?

sysctl, Linux çekirdeğinin (kernel) çalışma zamanında ayarlanabilen parametrelerini okumak ve değiştirmek için kullanılan bir mekanizmadır. Bu parametreler /proc/sys dizininde temsil edilir ve sysctl aracıyla kalıcı veya geçici olarak değiştirilebilir. Kernel tuning; ağ gecikmesi, bağlantı yoğunluğu, dosya tanıtıcıları (file descriptors) ve hafıza yönetimi gibi alanlarda doğrudan etki eder.

Neden Kernel Tuning Yapmalıyız?

  • Performans: Yüksek trafik altında TCP/IP yığınını optimize ederek gecikmeyi ve paket kaybını azaltabilirsiniz.
  • Kaynak Kullanımı: Dosya tanıtıcıları ve bellek sınırlarını sunucu yüküne göre ayarlamak stabiliteyi artırır.
  • Güvenlik: İstenmeyen paket tiplerini, IP yönlendirmesini veya ICMP yönlendirmesini sınırlayarak saldırı yüzeyini azaltabilirsiniz.
  • Uyumluluk: Sanallaştırma (VPS/VDS) ve konteyner ortamlarında host ve guest parametrelerini dengelemek için tuning gerekir.

Ağ (Network) Parametreleri ve Örnekler

En çok fayda sağlayan ağ parametreleri TCP yığını, bağlantı kuyruğu ve kernel tarafından kullanılan buffer boyutlarıdır. Aşağıda sık kullanılan ayarlar ve ne işe yaradıkları açıklanmıştır.

Önemli TCP Parametreleri

  • net.ipv4.tcp_tw_reuse: TIME_WAIT durumundaki soketlerin yeniden kullanılmasına izin verir; yüksek bağlantı yapan sunucularda faydalıdır.
  • net.ipv4.tcp_fin_timeout: FIN_WAIT sürelerini kısaltarak kaynakları daha hızlı serbest bırakır.
  • net.core.somaxconn: listen() kuyruğunun maksimum uzunluğunu belirler; yüksek trafik uygulamaları için artırılmalıdır.
  • net.core.netdev_max_backlog: Kernel'in ağ kartından çekemediği paketleri tutan kuyruğun uzunluğu.

Örnek: Web sunucusu için temel ağ ayarları

sysctl -w net.core.somaxconn=65535
sysctl -w net.core.netdev_max_backlog=50000
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_fin_timeout=30

Bu ayarlar geçici olarak etkilidir; kalıcı yapmak için /etc/sysctl.conf veya /etc/sysctl.d/99-custom.conf dosyasına ekleyin.

Bellek (VM) ve Dosya Sistemi Parametreleri

vm ve dosya sistemi (fs) ile ilgili kernel ayarları bellek yönetimi, swap kullanımı ve I/O performansını doğrudan etkiler.

Önemli vm Parametreleri

  • vm.swappiness: Swap kullanım eğilimini belirler; veritabanı sunucularında düşük değer önerilir (ör. 1-10).
  • vm.dirty_ratio / vm.dirty_background_ratio: Yazma önbelleğinin sınırlarını kontrol eder, I/O patlamalarını yönetmeye yardımcı olur.
  • vm.overcommit_memory: Bellek taahhüt politikasını belirler; 2 değeri ile büyük bellek taleplerine stricter kontrol uygulanır.

Dosya Sistemi ve FD (file descriptors)

  • fs.file-max: Sistem genelindeki maksimum açık dosya tanıtıcı (file descriptor) sayısı.
  • fs.inotify.max_user_watches: Dosya izleme (inotify) ile ilgili sınır; çoklu uygulama izlemelerinde artırılması gerekebilir.

Örnek: Veritabanı için önerilen ayarlar

sysctl -w vm.swappiness=5
sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_background_ratio=5
sysctl -w fs.file-max=2097152

Güvenlik Sertleştirmeleri (Hardening)

Kernel seviyesinde yapılacak bazı değişiklikler sistemin saldırılara karşı dayanıklılığını artırır. Aşağıda sık kullanılan ve açıklamasıyla birlikte verilen ayarlar yer almaktadır.

Temel Güvenlik Ayarları

  • net.ipv4.ip_forward: IP yönlendirmesini kapatın (0) eğer sunucu router değilse.
  • net.ipv4.conf.all.rp_filter: Reverse path filtering ile spoofing saldırılarını azaltır.
  • net.ipv4.icmp_echo_ignore_broadcasts: Broadcast ICMP taleplerini görmezden gelerek Smurf benzeri saldırılara karşı korur.
  • net.ipv4.tcp_syncookies: SYN flood saldırılarına karşı syncookie kullanımı.
  • kernel.randomize_va_space: Address Space Layout Randomization (ASLR) için değer; 2 önerilir.

Örnek: Güvenlik odaklı sysctl dosyası

# /etc/sysctl.d/99-security.conf
net.ipv4.ip_forward=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.tcp_syncookies=1
kernel.randomize_va_space=2

İzleme, Test ve Geri Alma Adımları

Yapılan değişiklikleri izlemek ve olası regresyonları geri almak için pratik adımlar atılmalıdır. Önce test ortamında denemek en güvenli yaklaşımdır.

Değişiklikleri uygulama ve test

  • Geçici uygulama: sysctl -w key=value ile hızlı test yapın.
  • Kalıcı uygulama: /etc/sysctl.d/99-custom.conf dosyası oluşturun ve sysctl --system ile yükleyin.
  • Geri alma: Değişikliklerden sonra sorun olursa eski dosyayı geri yükleyin veya sunucuyu yeniden başlatın.

İzleme için öneriler

  • Grafiksel izleme: Prometheus/Grafana kullanarak node_exporter üzerinden metrik toplayın.
  • Özelleştirilmiş alarm: TCP kuyruğu ve dropped packet sayısı için uyarı kuralları ekleyin.
  • Performans testleri: wrk, ab veya httperf ile yük testleri yapın ve değişiklik öncesi/sonrası karşılaştırın.

Pratik Konfigürasyon Örnekleri

Aşağıdaki senaryolar, gerçek dünyada sık karşılaşılan durumlar için örnek sysctl konfigürasyonları içerir.

1) Yüksek trafikli web sunucusu (Nginx/Apache)

# /etc/sysctl.d/99-webserver.conf
net.core.somaxconn=65535
net.core.netdev_max_backlog=250000
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=20
net.ipv4.tcp_max_syn_backlog=65535
fs.file-max=524288
vm.swappiness=10

Bu ayarlar bağlantı kuyruğu ve dosya tanıtıcıları üzerinde baskıyı azaltır. Özellikle high-concurrency (yüksek eşzamanlılık) senaryolarında işe yarar.

2) Veritabanı sunucusu (MySQL / MariaDB / PostgreSQL)

# /etc/sysctl.d/99-db.conf
vm.swappiness=1
vm.dirty_ratio=5
vm.dirty_background_ratio=2
fs.file-max=2097152
kernel.sem=250 32000 100 128

Veritabanları için swap kullanımını minimumda tutmak ve yazma tampon davranışını kontrol etmek önemlidir.

Parametre Önerilen Değer Ne İşe Yarar?
net.core.somaxconn 65535 listen() kuyruğu maksimum uzunluğu; yüksek trafikte artırılır.
vm.swappiness 1-10 Swap kullanım eğilimi; veritabanlarında düşük değer tercih edilir.
fs.file-max 1M-2M Sistem genelindeki maksimum açık dosya tanıtıcısı sayısı.
net.ipv4.tcp_syncookies 1 SYN floodlara karşı koruma.

Uyarılar ve En İyi Uygulamalar

  • Test ortamı: Değişiklikleri üretim ortamına almadan önce test edin.
  • Tek tek değişiklik: Aynı anda çok fazla parametre değiştirmeyin; sorun tespiti zorlaşır.
  • Sürüm ve dağıtım farkları: Farklı Linux çekirdek sürümleri bazı parametreleri desteklemeyebilir.
  • Donanım kısıtları: Ayarlar donanımınızla (RAM, NIC, disk) uyumlu olmalıdır.

Sıkça Sorulan Sorular

Kernel tuning ile her zaman daha iyi performans alır mıyım?

Hayır. Kernel tuning doğru yapıldığında performansı artırır ancak yanlış değerler stabilite sorunlarına veya beklenmeyen yan etkilere yol açabilir. Bu yüzden değişiklikleri kademeli ve test edilmiş şekilde uygulayın.

sysctl değişiklikleri kalıcı nasıl yapılır?

Kalıcı için /etc/sysctl.conf veya tercihen /etc/sysctl.d/99-custom.conf dosyasına parametreleri ekleyip sysctl --system komutunu çalıştırın.

Hangi parametreleri önce değiştirmeliyim?

İlk etapta fs.file-max, net.core.somaxconn ve vm.swappiness gibi düşük riskli ve sık kullanılan parametreleri test edin. Ağ bazlı optimizasyonlar için net.core.netdev_max_backlog ve tcp_* ayarlarına geçin.

Bir ayar soruna neden olursa nasıl geri dönerim?

Değişiklikleri uygulamadan önce mevcut /etc/sysctl.d dosyasının yedeğini alın. Sorun olduğunda yedek dosyayı geri yükleyip sysctl --system çalıştırın veya sunucuyu yeniden başlatın.

Sanallaştırılmış (VPS/VDS) ortamlarda ekstra dikkat edilmesi gerekenler var mı?

Evet. Host üzerinde bazı kernel parametreleri guest için sınırlanmış olabilir. Sanallaştırma platformuna göre (KVM, Xen, OpenVZ) host/guest sınırlarını kontrol edin ve gerektiğinde çekirdek ayarlarını host seviyesinde düzenleyin.

Sonuç

Doğru planlanmış ve test edilmiş kernel tuning uygulamaları ile VPS/VDS ve kiralık sunucularda performans ve güvenlik anlamında önemli kazanımlar elde edebilirsiniz. Başarılı bir optimizasyon için adım adım test, izleme ve geri alma planı şarttır. Eğer mevcut sunucunuzda ayarları uygulamak veya profesyonel destek almak isterseniz Corelux'un sunucu çözümlerine göz atabilirsiniz:

İhtiyacınıza göre Corelux uzmanlarıyla iletişime geçerek, sunucularınız için optimize edilmiş sysctl konfigürasyonları ve izleme çözümleri talep edebilirsiniz.

Yazar

Boran BAR

Chat on WhatsApp