
VPS'te SWAP Alanı Yapılandırması
VPS sunucunuzda SWAP alanı nedir, nasıl yapılandırılır? Doğru boyutlandırma ve performans optimizasyonu.
Ahmet Yılmaz
Kıdemli Altyapı Mühendisi
VPS sunucunuzda MySQL sorgusu çalışırken aniden servis kapandı mı? Büyük olasılıkla Linux çekirdeğinin OOM (Out of Memory) Killer mekanizması, RAM tükendiğinde en çok bellek kullanan süreci sonlandırdı. SWAP alanı, fiziksel RAM dolduğunda disk üzerinde sanal bellek olarak çalışan bir güvenlik ağıdır. Bu rehberde VPS'inizde SWAP dosyası oluşturmayı, swappiness parametresini optimize etmeyi ve SWAP kullanımını izlemeyi adım adım ele alıyoruz.
SWAP Nedir ve Neden Gerekli?
SWAP, Linux çekirdeğinin fiziksel RAM dolduğunda kullanılmayan bellek sayfalarını diske taşıdığı alandır. RAM'e kıyasla çok daha yavaştır (NVMe SSD'de bile RAM'in ~100 katı yavaş), ancak OOM Killer'ın kritik servisleri sonlandırmasını önleyen bir güvenlik ağı görevi görür.
💡 İpucu: SWAP, RAM'in yerine geçmez - RAM'in tükenmesine karşı bir tampon bölgedir. Sürekli yoğun SWAP kullanımı performans düşüşüne neden olur. Bu durumda asıl çözüm RAM artırımıdır.
Ne Kadar SWAP Alanı Ayarlanmalı?
| Fiziksel RAM | Önerilen SWAP | Açıklama |
|---|---|---|
| 512 MB – 1 GB | 1 – 2 GB | Düşük RAM'li VPS'lerde SWAP kritik önemdedir |
| 2 GB | 2 GB | RAM'in 1 katı yeterlidir |
| 4 GB | 2 – 4 GB | Çoğu web sunucusu için ideal |
| 8 GB+ | 2 – 4 GB | Yüksek RAM'de büyük SWAP gereksiz; güvenlik ağı yeterli |
SWAP Dosyası Oluşturma (Adım Adım)
Modern Linux dağıtımlarında SWAP partition yerine SWAP dosyası tercih edilir. Boyutunu değiştirmek daha kolaydır ve disk bölümlendirmesi gerektirmez.
# 1. Mevcut SWAP durumunu kontrol et
sudo swapon --show
free -h
# 2. 2 GB'lık SWAP dosyası oluştur
sudo fallocate -l 2G /swapfile
# 3. Güvenlik izinlerini ayarla (yalnızca root okuyabilmeli)
sudo chmod 600 /swapfile
# 4. SWAP alanı olarak biçimlendir
sudo mkswap /swapfile
# 5. SWAP'ı etkinleştir
sudo swapon /swapfile
# 6. Doğrula
sudo swapon --show
free -h
Kalıcı Hale Getirme (fstab)
Yukarıdaki komutlar SWAP'ı anlık olarak etkinleştirir, ancak sunucu yeniden başlatıldığında kaybolur. Kalıcı yapmak için /etc/fstab dosyasına eklemeniz gerekir:
# fstab'a SWAP satırını ekle
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Doğrulama: fstab'ı kontrol et
cat /etc/fstab | grep swap
⚠️ Önemli Uyarı: fallocate komutu bazı dosya sistemlerinde (özellikle Btrfs) düzgün çalışmayabilir. Bu durumda dd if=/dev/zero of=/swapfile bs=1M count=2048 komutunu kullanın. Ayrıca OpenVZ tabanlı VPS'lerde SWAP oluşturma kısıtlı olabilir; KVM tabanlı bulut sunucularda bu sorun yoktur.
Swappiness Ayarı ve Optimizasyon
vm.swappiness parametresi, çekirdeğin RAM'den SWAP'a ne kadar agresif sayfa taşıyacağını belirler. Değer 0-100 arasındadır; varsayılan 60'tır.
| Swappiness Değeri | Davranış | Uygun Senaryo |
|---|---|---|
| 0 | SWAP yalnızca RAM tamamen dolduğunda kullanılır | Veritabanı sunucuları (MySQL, PostgreSQL) |
| 10 | Minimum SWAP kullanımı, RAM öncelikli | Web sunucuları için önerilen değer |
| 60 (varsayılan) | Dengeli - masaüstü sistemler için uygun | Sunucular için genellikle çok agresif |
| 100 | Çekirdek agresif şekilde SWAP'a taşır | Sunucularda önerilmez |
# Mevcut swappiness değerini kontrol et
cat /proc/sys/vm/swappiness
# Anlık olarak 10'a ayarla
sudo sysctl vm.swappiness=10
# Kalıcı hale getir
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
# VFS cache pressure ayarı (inode/dentry önbelleğini korur)
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
# Değişiklikleri uygula
sudo sysctl -p
SWAP Kullanımını İzleme
# Genel SWAP durumu
free -h
# Hangi süreçlerin SWAP kullandığını göster
for file in /proc/*/status; do
awk '/VmSwap|Name/{printf $2 " " $3}END{print ""}' $file
done | sort -k 2 -n -r | head -10
# vmstat ile swap in/out aktivitesi (si/so sütunları)
vmstat 5 10
vmstat çıktısında si (swap in) ve so (swap out) değerleri sürekli sıfırdan büyükse, RAM yetersiz demektir ve kaynak izleme rehberimizde anlattığımız yöntemlerle hangi sürecin RAM tükettiğini tespit etmelisiniz.
SWAP Ne Zaman Çözüm Değildir?
-
Sürekli yoğun SWAP kullanımı SWAP kullanımı toplam SWAP alanının %50'sini sürekli aşıyorsa, RAM artırımı gereklidir. SWAP yalnızca geçici yük artışları için tampon olmalıdır.
-
Veritabanı performansı kritikse MySQL/PostgreSQL gibi veritabanları, verileri RAM'de tutarak hızlı erişim sağlar. SWAP'a düşen veritabanı sayfaları sorgu sürelerini katlar. Bu durumda swappiness=0 veya 1 ayarlayın ve RAM'i artırın.
-
HDD tabanlı sunucularda HDD üzerinde SWAP performansı çok düşüktür (rastgele okuma ~0.1 ms NVMe vs ~10 ms HDD). NVMe SSD'li bulut sunucularda SWAP performansı çok daha kabul edilebilir düzeydedir.
Sıkça Sorulan Sorular
SWAP dosyası mı yoksa SWAP partition mı kullanmalıyım?
Modern Linux çekirdeklerinde (4.0+) SWAP dosyası performans açısından partition ile neredeyse eşdeğerdir. Dosya kullanmak boyut değişikliğini kolaylaştırır ve disk bölümlendirmesi gerektirmez. SWAP dosyası tercih edin.
SWAP alanını sonradan büyütebilir miyim?
Evet. Mevcut SWAP dosyasını swapoff /swapfile ile devre dışı bırakın, fallocate ile yeni boyutta oluşturun, mkswap ve swapon ile tekrar etkinleştirin. İşlem sırasında yeterli boş RAM olduğundan emin olun.
SWAP kullanımı disk ömrünü etkiler mi?
SSD'lerde yoğun yazma işlemi disk ömrünü kısaltabilir, ancak modern NVMe SSD'lerin TBW (Total Bytes Written) değerleri yüzlerce terabayttır. Normal SWAP kullanımı disk ömrünü anlamlı şekilde etkilemez.
OpenVZ VPS'te SWAP oluşturamıyorum, ne yapmalıyım?
OpenVZ konteyner tabanlı sanallaştırma kullandığı için çekirdek parametrelerini değiştiremezsiniz. KVM tabanlı VPS'e geçiş yapmanız gerekir. KVM tam sanallaştırma sağladığı için SWAP dahil tüm çekirdek ayarlarını yapılandırabilirsiniz.
Sonuç
SWAP alanı, VPS sunucunuzda RAM tükenmesine karşı kritik bir güvenlik ağıdır. RAM miktarınıza uygun boyutta SWAP dosyası oluşturun, swappiness değerini sunucu iş yüküne göre ayarlayın (web sunucuları için 10 önerilir) ve vmstat ile SWAP aktivitesini düzenli izleyin. Sürekli yoğun SWAP kullanımı görüyorsanız, asıl çözüm RAM artırımıdır.
Daha Fazla RAM'e mi İhtiyacınız Var?
Hosted Cloud bulut sunucularında anlık RAM ve CPU artırımı yapabilirsiniz. NVMe SSD depolama ile SWAP performansı da üst düzeyde.
Bulut Sunucu Planlarını İncele →Ahmet Yılmaz
Kıdemli Altyapı Mühendisi
10 yılı aşkın bulut altyapısı ve DevOps deneyimiyle Hosted Cloud'un teknik ekibinde yer almaktadır. Kubernetes, Terraform ve yüksek erişilebilirlik mimarileri üzerine uzmanlaşmıştır.
Yorumlar yakında