TürkiyeVPS

Ubuntu 24.04 VPS'e Swap Ekleme: Düşük RAM Rehberi

512 MB veya 1 GB RAM'li bir VPS'te uygulamalarınız kapanıyorsa swap alanı ilk yardımdır. Ubuntu 24.04'te swap eklemeyi, doğru boyutu ve swap'in sınırlarını anlatıyoruz.

6 dk okuma

Küçük bir VPS aldınız, birkaç servis kurdunuz ve bir gün MySQL'in ya da Node.js uygulamanızın sebepsiz yere kapandığını fark ettiniz. Çoğu zaman sebep basittir: RAM bitmiştir ve Linux çekirdeği bellek açmak için bir süreci öldürmüştür. Bu yazıda Ubuntu 24.04'te swap oluşturmayı, swap boyutunu nasıl seçeceğinizi, kalıcı hâle getirmeyi, zram alternatifini ve swap'in ne zaman yeterli olmadığını anlatıyoruz. Rehber özellikle 512 MB ve 1 GB RAM'li sunucular için yazıldı.

Swap alanı nedir, ne değildir?

Swap, RAM dolduğunda az kullanılan bellek sayfalarının geçici olarak diske taşındığı alandır. Bir dosya (swap file) ya da ayrı bir bölüm (swap partition) olabilir. VPS'lerde en pratik yol swap dosyasıdır.

Swap'in faydaları:

  • Ani bellek sıçramalarında sürecin öldürülmesi yerine sistemin yavaşlayarak ayakta kalmasını sağlar.
  • Açılışta yüklenip sonra pek kullanılmayan bellek sayfalarını diske taşıyarak RAM'i asıl işe bırakır.
  • apt upgrade, npm install veya composer install gibi kısa süreli ama bellek yiyen işlemlerin yarıda kesilmesini önler.

Ama swap RAM'in yerini tutmaz. Disk, en hızlı SSD bile olsa RAM'den çok daha yavaştır. Sunucunuz sürekli swap kullanıyorsa her şey yavaşlar. Swap bir emniyet kemeridir, ek motor değil.

1. Mevcut durumu kontrol edin

Önce RAM ve swap durumuna bakın:

free -h
swapon --show

swapon --show hiçbir şey yazdırmıyorsa sistemde swap yoktur. Bir çıktı görüyorsanız zaten swap tanımlı demektir; ikinci bir swap eklemeden önce boyutunu değerlendirin.

Sonra disk alanına bakın:

df -h /

Bu adım küçük VPS'lerde önemlidir. Örneğin giriş seviyesi bir VPS'te disk 5 GB'tır; buna 2 GB swap eklemek diskin büyük kısmını yer. Bu tür sunucularda 512 MB ile 1 GB arası bir swap genellikle mantıklı bir dengedir.

2. Swap boyutunu seçin

Kesin bir formül yok, ama küçük sunucular için şu tablo iyi bir başlangıçtır:

RAM Önerilen swap Not
512 MB 512 MB – 1 GB Disk küçükse 512 MB yeterli
1 GB 1 GB Çoğu küçük proje için dengeli
2 GB 1 GB – 2 GB Ani yükler için tampon
4 GB ve üzeri 1 GB – 2 GB Daha çok emniyet amaçlı

Hazırda bekletme (hibernate) sunucularda kullanılmadığı için "RAM'in iki katı" gibi eski kurallara uymanız gerekmez.

3. Swap dosyasını oluşturun

Aşağıdaki örnek 1 GB swap oluşturur. 512 MB istiyorsanız 1G yerine 512M yazın.

sudo fallocate -l 1G /swapfile

fallocate bazı dosya sistemlerinde hata verebilir. Bu durumda aynı dosyayı dd ile oluşturun (biraz daha yavaştır):

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 status=progress

Dosyayı yalnızca root'un okuyabileceği hâle getirin, swap olarak biçimlendirin ve etkinleştirin:

sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Kontrol edin:

swapon --show
free -h

Swap: satırında yeni alanı görüyorsanız swap çalışıyor demektir.

"Operation not permitted" ya da "Invalid argument" hatası

swapon bu hatalardan birini verirse, sunucunun çalıştığı sanallaştırma katmanı swap dosyasına izin vermiyor olabilir. Bu durumda dosyayı silin (sudo rm /swapfile) ve sitedeki canlı destekten ya da müşteri panelinden destek talebi açarak durumu bize sorun. Bu arada aşağıdaki RAM tasarrufu önerileri işinize yarayabilir.

4. Swap'i kalıcı yapın

swapon ile açılan swap, sunucu yeniden başlayınca kaybolur. Kalıcı olması için /etc/fstab dosyasına ekleyin. Önce yedek alın:

sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Satırın doğru eklendiğini görmek için:

tail -n 3 /etc/fstab

fstab dosyasındaki bir hata açılışı bozabilir; yedek almanın sebebi budur. Bir sorun olursa müşteri panelindeki web terminali üzerinden sudo cp /etc/fstab.bak /etc/fstab ile eski hâline dönebilirsiniz.

5. swappiness ve önbellek ayarı

vm.swappiness, çekirdeğin ne kadar istekli swap kullanacağını belirler (0–200 arası, Ubuntu'da varsayılan 60). Sunucularda daha düşük bir değer, uygulamaların RAM'de kalmasını ve swap'in gerçekten gerektiğinde devreye girmesini sağlar.

cat /proc/sys/vm/swappiness

Kalıcı ayar için bir dosya oluşturun:

sudo tee /etc/sysctl.d/99-swap.conf > /dev/null <<'EOF'
vm.swappiness=10
vm.vfs_cache_pressure=50
EOF
sudo sysctl --system

vm.vfs_cache_pressure=50, dosya sistemi önbelleğinin (dizin ve dosya bilgileri) biraz daha uzun süre RAM'de tutulmasını sağlar. Bu değerler çoğu küçük sunucu için makul bir başlangıçtır; kendi iş yükünüze göre deneyerek ayarlayabilirsiniz.

Alternatif: zram ile sıkıştırılmış swap

zram, RAM'in bir kısmını sıkıştırılmış bir swap aygıtı olarak kullanır. Disk yerine RAM'de çalıştığı için swap dosyasından çok daha hızlıdır ve disk alanı harcamaz; karşılığında biraz işlemci kullanır. Disk alanı kısıtlı küçük VPS'lerde iyi bir seçenektir.

sudo apt install -y zram-tools
sudo nano /etc/default/zramswap

Dosyada şu değerleri ayarlayın (varsayılan algoritma lz4'tür; zstd biraz daha fazla işlemci kullanır ama daha iyi sıkıştırır):

ALGO=zstd
PERCENT=50
PRIORITY=100

PERCENT=50, RAM'in yarısı kadar (sıkıştırılmamış veri cinsinden) zram alanı ayırır. PRIORITY=100, zram'in disk üzerindeki swap'ten önce kullanılmasını sağlar. Ardından servisi yeniden başlatın:

sudo systemctl restart zramswap
swapon --show

Listede /dev/zram0 görünüyorsa zram çalışıyordur. zram ile swap dosyasını birlikte kullanabilirsiniz; öncelik değeri sayesinde önce zram dolar. zram modülü yüklenemezse yine destek ekibine danışabilirsiniz.

Swap nasıl kaldırılır?

sudo swapoff /swapfile
sudo sed -i '\|^/swapfile none swap sw 0 0$|d' /etc/fstab
sudo rm /swapfile

swapoff komutu swap'teki verileri RAM'e geri taşır; RAM yetersizse biraz sürebilir.

Bellek yetmediğini nasıl anlarsınız? (OOM)

Linux, bellek tamamen bittiğinde OOM killer ile bir süreci sonlandırır. Bunun izlerini çekirdek günlüğünde bulabilirsiniz:

sudo journalctl -k | grep -i -E "out of memory|oom"
sudo dmesg -T | grep -i -E "killed process|out of memory"

Anlık olarak hangi süreçlerin RAM kullandığını görmek için top (ardından Shift+M) ya da ps aux --sort=-%mem | head kullanabilirsiniz. Bu ve benzeri komutları sunucu yönetimi komutları yazımızda bulabilirsiniz.

RAM'den tasarruf etmenin diğer yolları

  • Daha hafif yazılım seçin: Apache yerine Nginx, MySQL yerine gerekiyorsa SQLite gibi.
  • MySQL/MariaDB'yi küçültün: innodb_buffer_pool_size değerini küçük sunucularda 64M–128M gibi düşük tutun.
  • PHP-FPM'i sınırlayın: pm = ondemand ve düşük bir pm.max_children değeri, boşta bekleyen süreçlerin RAM yemesini engeller.
  • Docker konteynerlerine sınır koyun: docker run --memory=256m ... gibi bir limit, tek bir konteynerin tüm sunucuyu kilitlemesini önler. Docker'a yeniyseniz Docker kurulumu rehberimize bakabilirsiniz.
  • Kullanmadığınız servisleri kapatın: systemctl list-units --type=service --state=running ile çalışanları görün.

Ne zaman swap yerine RAM yükseltmeli?

Swap ani yükleri karşılamak içindir. free -h çıktısında swap sürekli doluysa, vmstat 5 çıktısındaki si ve so sütunları sürekli sıfırdan büyükse ya da sunucu belirgin şekilde yavaşladıysa asıl ihtiyacınız daha fazla RAM'dir. Bu noktada daha büyük bir pakete geçmek, swap ayarlarıyla uğraşmaktan çok daha verimlidir. Ucuz bir sunucudan neler beklenebileceğini ucuz VPS alırken dikkat edilmesi gerekenler yazımızda dürüstçe anlattık.

Sık Sorulan Sorular

Swap, SSD'nin ömrünü kısaltır mı?

Swap diske yazma yapar, ancak düşük swappiness değeriyle ve ara sıra kullanıldığında bu yük çok küçüktür. Sürekli yoğun swap kullanımı zaten performans açısından da istenmeyen bir durumdur; o noktada RAM artırmak gerekir.

512 MB RAM'li VPS'te swap ile neler çalıştırabilirim?

Basit bir bot, küçük bir statik site ya da hafif bir API gibi projeler için 512 MB RAM ve küçük bir swap yeterli olabilir. Veritabanı, WordPress ve Docker gibi daha ağır yığınlar için 1–2 GB RAM daha rahat bir başlangıçtır.

zram mı, swap dosyası mı?

Disk alanınız kısıtlıysa ve işlemciniz boşta kalıyorsa zram genellikle daha hızlı ve pratiktir. İkisini birlikte kullanıp zram'e daha yüksek öncelik vermek de iyi bir seçenektir.

Daha fazla RAM gerektiğinde

TürkiyeVPS'in İstanbul'daki VPS paketleri aylık $0.89'dan başlar; 1 GB ve 2 GB RAM'li seçenekler de bulunur. İşlemcinin size ayrıldığı ve RAM'in garantili olduğu VDS paketleri ise aylık $1.69'dan başlar. Tüm paketlerde limitsiz trafik ve tam root erişimi vardır. Mevcut sunucunuzu büyütmek isterseniz destek talebi açmanız yeterli; verileriniz korunarak bir üst pakete taşınır.