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 Swap | Tipik Kullanım |
|---|---|---|
| 1 GB | 1-2 GB | Küçük WordPress, statik site |
| 2 GB | 2-4 GB | Orta trafikli CMS, panel kurulumu |
| 4 GB | 2-4 GB | E-ticaret, çoklu site barındırma |
| 8 GB ve üzeri | 2-4 GB | Veritabanı / 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_sizedeğerini sunucu RAM'inin tamamına yakın vermeyin; diğer servislere yer bırakın. - PHP-FPM pm ayarı:
pm = ondemandveya kontrollüpm.max_childrenile süreç sayısını sınırlayın. - Gereksiz servisleri kapatın:
systemctl list-units --type=service --state=runningile ç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.
Web Siteniz Hızlansın!
Blogumuzu beğendiniz mi? Web siteniz için yüksek performanslı ve %99.9 uptime garantili hosting paketlerimize göz atın.
Paketleri İncele →