Sınırlı RAM'e sahip bir sanal sunucuda en sinir bozucu anlardan biri, MySQL'in ya da PHP-FPM'in "out of memory" hatasıyla aniden öldürülmesidir. Çoğu VDS paketinde bellek dar tutulduğu için, fiziksel RAM tükendiğinde sistemin nefes alabileceği bir tampon alana ihtiyaç duyulur. İşte swap tam da bu noktada devreye girer ve doğru yapılandırıldığında sunucunuzu çökme eşiğinden geri çeker.

Swap Nedir ve Neden Gerekir?

Swap, fiziksel RAM dolduğunda işletim sisteminin nadiren kullanılan bellek sayfalarını diske taşıdığı bir disk alanıdır. Bu alan iki biçimde olabilir: ayrı bir swap partition ya da dosya tabanlı bir swap file. VDS ortamlarında disk bölümlemesine çoğu zaman müdahale edemediğiniz için, pratikte en çok kullanılan yöntem swap dosyasıdır. Swap, RAM'in yerini tutmaz; o kadar hızlı değildir. Ancak ani bellek sıçramalarında sistemin OOM Killer'ı devreye sokmadan işi tamamlamasını sağlar.

Özellikle düşük bellekli planlarda çalışan WordPress, Magento veya panel tabanlı kurulumlarda swap, kararlılığı doğrudan etkiler. Daha geniş kaynaklara ihtiyaç duyduğunuzu fark ettiğinizde ise ihtiyacınıza uygun bir sanal sunucu planı seçerek fiziksel RAM'i artırmak çoğu durumda daha sağlıklı bir çözümdür.

Mevcut Bellek ve Swap Durumunu Kontrol Etme

İşleme başlamadan önce sunucunun güncel durumunu görmek gerekir. Aşağıdaki komutlar size hem RAM hem de swap kullanımını net bir tablo halinde verir.

free -h
swapon --show
cat /proc/swaps

free -h çıktısındaki "Swap" satırı sıfırsa, sistemde tanımlı bir swap alanı yok demektir. swapon --show hiçbir şey döndürmüyorsa da aynı durumu doğrulamış olursunuz.

Adım Adım Swap Dosyası Oluşturma

Modern dağıtımların hemen tamamında (Ubuntu 20.04/22.04, Debian 11/12, AlmaLinux 8/9) aşağıdaki adımlar sorunsuz çalışır. Burada 2 GB'lık bir swap dosyası oluşturuyoruz.

# Disk üzerinde 2GB'lık dosya ayır
fallocate -l 2G /swapfile

# fallocate desteklenmiyorsa dd ile alternatif
# dd if=/dev/zero of=/swapfile bs=1M count=2048

# Sadece root erişimi için izinleri kısıtla
chmod 600 /swapfile

# Alanı swap olarak biçimlendir
mkswap /swapfile

# Swap'i etkinleştir
swapon /swapfile

İşlem sonrası tekrar free -h çalıştırdığınızda Swap satırının dolduğunu göreceksiniz. Bu aşamada swap aktiftir ancak henüz kalıcı değildir.

Kalıcı Hale Getirme: /etc/fstab

Sunucu yeniden başlatıldığında swap'in otomatik devreye girmesi için /etc/fstab dosyasına bir satır eklenmelidir. Düzenleme öncesi dosyanın yedeğini almak iyi bir alışkanlıktır.

cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' >> /etc/fstab

Satırı ekledikten sonra mount -a ya da bir test reboot ile yapılandırmanın hatasız olduğunu doğrulayın. fstab'da yapılan bir yazım hatası, sunucunun açılışta takılmasına yol açabileceği için bu adımı atlamayın.

Swappiness ve Cache Pressure ile İnce Ayar

Swap'i oluşturmak işin yarısıdır; çekirdeğin onu ne kadar agresif kullanacağını belirlemek de en az o kadar önemli. vm.swappiness değeri 0 ile 100 arasında olup, çekirdeğin RAM yerine swap'e ne kadar erken yönelmek istediğini ifade eder. Varsayılan değer çoğu dağıtımda 60'tır ve sunucular için genellikle fazla yüksektir.

  • vm.swappiness=10: Sunucular için yaygın tercih; swap yalnızca gerçekten gerektiğinde devreye girer.
  • vm.swappiness=1: Veritabanı ağırlıklı sistemlerde, disk gecikmesini minimize etmek için kullanılır.
  • vm.vfs_cache_pressure=50: dentry ve inode önbelleğinin daha uzun süre RAM'de tutulmasını sağlar.
# Anlık olarak uygula
sysctl vm.swappiness=10
sysctl vm.vfs_cache_pressure=50

# Kalıcı hale getir
cat <<EOF >> /etc/sysctl.conf
vm.swappiness=10
vm.vfs_cache_pressure=50
EOF

sysctl -p

Bogahost Önerisi: Swap'i fiziksel RAM yetersizliğinin kalıcı çözümü olarak görmeyin. Disk üzerinde sürekli swap kullanımı (free çıktısında swap'in dolu kalması), I/O gecikmesini artırır ve özellikle SSD ömrünü zorlar. Eğer sunucunuz düzenli olarak swap'e başvuruyorsa, bu bir uyarıdır; RAM yükseltmeyi ciddi şekilde değerlendirin.

Swap Boyutu Ne Kadar Olmalı?

Boyutlandırma için tek bir altın kural yoktur; iş yüküne göre değişir. Aşağıdaki tablo, yaygın senaryolar için pratik bir başlangıç noktası sunar.

Fiziksel RAMÖnerilen SwapTipik Kullanım
1 GB1-2 GBKüçük WordPress, statik site
2 GB2-4 GBOrta trafikli CMS, panel kurulumu
4 GB2-4 GBE-ticaret, çoklu site barındırma
8 GB ve üzeri2-4 GBVeritabanı / uygulama sunucusu

RAM arttıkça swap oranı düşer; çünkü amaç sistemi RAM yerine swap'te çalıştırmak değil, yalnızca ani sıçramalar için güvenlik tamponu bırakmaktır.

RAM Verimliliğini Artıran Pratik Düzenlemeler

Swap'i devreye almak kadar, RAM'i boşa harcayan servisleri dizginlemek de önemlidir. Birkaç pratik müdahale çoğu durumda gözle görülür rahatlama sağlar:

  • MySQL/MariaDB ayarları: innodb_buffer_pool_size değerini sunucu RAM'inin tamamına yakın vermeyin; diğer servislere yer bırakın.
  • PHP-FPM pm ayarı: pm = ondemand veya kontrollü pm.max_children ile süreç sayısını sınırlayın.
  • Gereksiz servisleri kapatın: systemctl list-units --type=service --state=running ile çalışan servisleri inceleyip kullanılmayanları durdurun.
  • OPcache: PHP için OPcache, tekrar tekrar derleme yükünü azaltarak hem CPU hem bellek davranışını iyileştirir.

Yönetimi kolaylaştıran bir kontrol paneli üzerinden bu servisleri izlemek isterseniz, Plesk lisanslı bir sanal sunucu ile kaynak kullanımını arayüzden takip edebilir, PHP ve veritabanı limitlerini tek ekrandan ayarlayabilirsiniz.

Özetle

Doğru boyutlandırılmış bir swap alanı ve makul bir swappiness değeri, dar bellekli bir VDS'i beklenmedik trafik dalgalarında ayakta tutar. Yine de swap bir ilk yardım çantasıdır, kalıcı tedavi değil; sunucunuz sürekli swap'e yaslanıyorsa kaynak planınızı gözden geçirmenin tam zamanıdır.

Reklam Alanı

İçerik Altı (728x90)

Yorumlar (0)

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Yorum Yap

Maksimum 2000 karakter