cPanel yıllıkta ücretsiz taşıma + SSLHemen İncele
Buyukweb
Linux Swap Rehberi: Dosya, ZRAM, Swappiness ve OOM Killer

Linux Swap Rehberi: Dosya, ZRAM, Swappiness ve OOM Killer

Linux'ta swap dosyası nasıl oluşturulur, ZRAM nedir, swappiness 10 mu 60 mi, OOM Killer hangi süreci öldürür? VDS sahipleri için pratik adım adım rehber.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü12 dakika okuma

Linux Swap Rehberi: Dosya, ZRAM, Swappiness ve OOM Killer

Swap'a ihtiyacın var mi? 8 GB RAM'lik bir VDS'de çoğu zaman aslında hayır — ama OOM Killer'a karşı sigorta olarak evet. "Swap açıksa SSD'm yanar mi?" "ZRAM mi swap dosyası mi?" "swappiness 10 mu 60 mi?" Pratikte bu sorulara verilecek cevap iş yüküne ve diske göre değişir. Bu rehber E5-V4 VDS gibi NVMe SSD tabanlı bir Linux sunucuda swap'i nasıl doğru yapılandıracağınızı adım adım gösterir.

Hosting kullanıcısına not: cPanel hosting ortamlarında swap host seviyesinde yönetilir; son kullanıcı sysctl/swapfile üzerinde yetkili değildir. Bu rehber root erişimi olan VDS sahipleri içindir.

Swap Nedir, Kernel Tam Olarak Ne Yapar?

Linux belleğinde iki tür sayfa vardır: file-backed (disk üzerindeki bir dosyaya bağlı, örneğin mmap edilmiş kütüphane) ve anonymous (heap, stack, malloc). RAM dolmaya başlayınca kernel sayfalama (paging) ile az kullanılan sayfaları diske gönderir — bu işlemin adı page-out'tur. Tekrar erişilince page-in olur ve sayfa diskten RAM'e geri yüklenir.

File-backed sayfalar zaten diskte bir kopyaya sahip olduğu için RAM'den düşürülebilir; ihtiyaç olunca yeniden okunur. Anonymous sayfaların diskte kopyası yoktur — işte bu yüzden swap alanı gerekir. Swap, anonymous sayfaların dışarıya taşınabileceği tek yerdir. Swap yoksa anonymous bellek dolduktan sonra kernel OOM Killer'i tetikler ve büyük bir süreci öldürür.

vm.swappiness sysctl parametresi kernel'in ne kadar agresif swap kullanacağını belirler. Default 60'tir; veritabanı yoğun sunucuda 10 önerilir. Bunu birazdan detaylı işleyeceğiz.

Swap, ZRAM ve ZSWAP: Hangisi Ne Zaman?

Modern Linux'ta üç seçenek vardır; çoğu kullanıcı sadece birinciyi bilir.

Tür Nasıl Çalışır Avantaj Dezavantaj Büyükweb Önerisi
Swap (disk) Sayfaları diskteki dosyaya/partition'a yazar Klasik, her dağıtımda var Disk I/O latency, SSD yazma NVMe SSD'de OK; sigorta amaçlı 1-2 GB
ZRAM Sayfaları RAM içinde LZ4 ile sıkıştırıp yine RAM'de tutar Çok hızlı, SSD yazmaz, ~3:1 sıkıştırma Aslında RAM kullanır NVMe VDS'de bile bonus; ek tampon
ZSWAP RAM içinde sıkıştırılmış cache + disk swap'a fallback En iyi karma; sıcak sayfa RAM'de, soğuk diskte Konfigürasyon biraz zor İleri kullanıcı, opsiyonel

Pratik seçim: E5-V4 VDS NVMe SSD'li bir sunucuda önce 1-2 GB swap dosyası açın (OOM sigortası). Stres altında sürekli swap-in/swap-out gözlemlersiniz üzerine ZRAM ekleyin. ZSWAP'a gerek kalmadan çoğu workload için yeterli olur.

HDD uyarısı: Eski HDD diskte swap korkunçtur — page-in latency 10-15 ms, sistem kilitlenmiş gibi görünür. Büyükweb VDS'lerinde NVMe SSD standart olduğu için bu sorun yaşanmaz; ama 3rd-party HDD'li sunucuda swap yerine ZRAM tercih edin.

Swap Dosyası mi Swap Partition'i mi?

Eski rehberlerde "swap partition" ağırlıklı anlatılır. Modern systemd dağıtımlarında (Ubuntu 22.04, Debian 12, AlmaLinux 9, Rocky Linux 9) önerilen yol swap dosyası'dir.

Kriter Swap Dosyası Swap Partition
Esneklik fallocate ile boyut değiştir Disk yeniden bölme gerekli
Kurulum 5 dakika LVM/parted gerekli
Performans Modern kernelde aynı Tarihsel olarak az hızlı
Önerilen senaryo Çoğu VDS, cloud, container Hibernate isteyen workstation

VDS aldığınızda partition'lar zaten kurulu gelir; swap partition açmak için diski tekrar bölmek gereksizdir. Swap dosyası yetişir.

Swap Boyutu: Eski "RAM x 2" Kuralı Ölü

Çok eski Linux rehberlerinde "RAM'in 2 katı swap" yazar. Bu kural 90'larda 32-64 MB RAM'li makinelerde anlamlıydı; bugün 8-16 GB RAM'li sunucuda 16-32 GB swap boş yer israfıdır.

Modern öneri:

RAM Hibernate Yok (Sunucu) Hibernate Var (Workstation)
2 GB 1-2 GB swap 2-3 GB swap
4 GB 1-2 GB swap 4-6 GB swap
8 GB 1 GB swap (sigorta) 8-10 GB swap
16 GB+ 0-1 GB swap RAM kadar

Sunucularda hibernate yapmazsınız (uptime kritik); o yüzden hibernate sütununu yok sayın. 8 GB RAM'li bir VDS'de 1 GB swap OOM sigortası olarak yeterlidir. 16 GB ve üzeri RAM'li VDS'de swap'i 1 GB'da bırakın veya tamamen ZRAM'e geçin.

Adım Adım: Swap Dosyası Oluşturma (Ubuntu 22.04 / Debian 12)

Aşağıdaki örnek 2 GB swap dosyası oluşturur. Hiçbir komutta downtime gerekmez:

# 1. Mevcut durumu kontrol et
free -h
swapon --show

# 2. 2 GB'lik bos dosya olustur (sparse degil, alani gercekten ayir)
sudo fallocate -l 2G /swapfile
# Alternatif (fallocate calismazsa):
# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

# 3. Sadece root okuyabilsin (kritik guvenlik adimi)
sudo chmod 600 /swapfile

# 4. Linux swap formatina cevir
sudo mkswap /swapfile

# 5. Aktive et
sudo swapon /swapfile

# 6. Dogrulama
swapon --show
free -h

Reboot sonrası swap'in kalıcı olması için /etc/fstab dosyasına ekleyin:

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

Test: sudo swapoff /swapfile && sudo swapon -a ile kapatıp yeniden mount edin; hata vermezse fstab doğrudur.

Swap Dosyasını Büyütme veya Silme

# Buyutmek (4 GB'ye)
sudo swapoff /swapfile
sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile
sudo mkswap /swapfile && sudo swapon /swapfile

# Tamamen silmek
sudo swapoff /swapfile && sudo rm /swapfile
sudo sed -i '/swapfile/d' /etc/fstab

swappiness: Kernel'in Swap İştahını Ayarla

vm.swappiness 0 ile 100 arasında bir değerdir. Yüksek değer kernel'in swap'i daha agresif kullanması anlamına gelir; düşük değer ise RAM'i sonuna kadar dolduruncaya kadar swap'a dokunulmamasını söyler.

Değer Davranış Tipik Kullanım
0 Swap'i sadece OOM kaçınılmazlığı durumunda kullan Çok agresif; sunucuda OOM riski
10 Çok az swap, RAM dolana kadar bekle Veritabanı / web sunucu önerilen
60 Default (Ubuntu, Debian, RHEL) Genel amaçlı desktop/server
100 Eşit öncelik, agresif page-out Latency toleranslı batch iş yükleri

Büyükweb VDS önerisi: MariaDB/PostgreSQL ağ yoğun bir VDS sunucu'da 10. WordPress + WooCommerce karışık VDS'de 30-40 makul. Multi-tenant geliştirme ortamında 60 kalsın.

# Mevcut deger
cat /proc/sys/vm/swappiness

# Runtime degisikligi (reboot'ta sifirlanir)
sudo sysctl vm.swappiness=10

# Kalici (reboot sonrasi da gecerli)
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

vfs_cache_pressure: Genelde Unutulan Kardeş Parametre

vm.vfs_cache_pressure kernel'in dentry/inode cache'lerini ne kadar agresif geri dönüştüreceğini belirler. Default 100. Veritabanı sunucusunda 50 önerilir — böylelikle dosya metadata cache'i RAM'de daha uzun durur, sorgu süresi azalır.

echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

ZRAM Kurulumu: NVMe VDS'de Bonus Tampon

ZRAM, RAM içinde sıkıştırılmış bir blok cihaz oluşturur ve onu swap olarak kullanır. SSD yazma yapmadığı için NVMe ömrü sorunu olmaz; LZ4 sıkıştırma ile genelde 2.5-3.5x sıkıştırma oranı yakalar.

# Ubuntu/Debian
sudo apt install zram-tools -y

# Konfigurasyon: RAM'in %50'si kadar zram tahsis et
sudo sed -i 's/^#PERCENT=.*/PERCENT=50/' /etc/default/zramswap
# Veya manuel: PERCENT=50 ekleyin

# Servisi etkinlestir
sudo systemctl enable --now zramswap

# Dogrulama
zramctl
swapon --show

ZRAM'in priority'si swap dosyasının priority'sinden yüksek olmalıdır (default zaten böyledir). Kernel önce ZRAM'i doldurur, sigara içmediğiniz takdirde diske dokunmaz.

# Priority kontrolu
cat /proc/swaps
# Filename                Type            Size            Used            Priority
# /dev/zram0              partition       4194300         0               100
# /swapfile               file            2097148         0               -2

OOM Killer: Hangi Süreci Öldürür?

RAM ve swap dolarsa kernel Out-Of-Memory Killer'i tetikler ve "uzun vadede en çok yer kaplayan, en az kritik" gördüğü bir süreci öldürür. Kararı /proc/<pid>/oom_score (0-1000 arası puan) belirler. Yüksek skor = "önce öldürülmeye aday".

OOM olayını görmek için:

# Son OOM kayitlari
sudo dmesg -T | grep -i "killed process"
# Ornek: "Out of memory: Killed process 1234 (mysqld) total-vm:..."

# Surekli izleme (yeni bir terminalde)
sudo journalctl -k -f | grep -i oom

Kritik Servisi OOM Killer'dan Koruma

MariaDB, PostgreSQL veya nginx gibi kritik servisleri oom_score_adj = -1000 ile korumak (öldürülmemesi anlamına gelir):

# MariaDB systemd service'ini override et
sudo systemctl edit mariadb

Açılan editöre:

[Service]
OOMScoreAdjust=-1000
sudo systemctl daemon-reload
sudo systemctl restart mariadb

# Dogrulama
cat /proc/$(pidof mariadbd)/oom_score_adj
# Beklenen: -1000

Uyarı: OOM Killer'i devre dışı bırakmak (vm.oom_kill_allocating_task=0) sistem stabilitesini bozar — kritik servisleri korumak çözüm, OOM'u kapatmak değildir.

Swap Performansını İzleme

Swap kullanımının var olması sorun değildir; sürekli artması sorundur. Temel komutlar:

# Genel ozet
free -h

# swap-in / swap-out hareketi (si/so surekli >0 ise RAM yetmiyor)
vmstat 1

# Swap kullanan top surec
top -o RES

# Surec bazinda detayli swap kullanimi
sudo apt install smem -y
smem -tk -s swap | tail -15

# /proc/meminfo
grep -E "Swap|MemTotal|MemFree|Cached" /proc/meminfo

swappiness Deneyleri (0 / 10 / 60 / 100)

Swappiness Davranış Tipik Etki
0 RAM sonuna kadar dolar, page-out yok OOM Killer riski yüksek
10 %95+ dolduktan sonra swap DB sunucu ideal
60 (default) %80+ dolunca swap Genel amaçlı
100 %50+ dolunca agresif swap Latency toleranslı batch

Sık Yapılan Hatalar

Swap = 0 (SSD ömrü kaygısı). "SSD yazmasın" diye swap'i tamamen kapatmak OOM riskini katlar. NVMe ömrü tipik 600 TBW; 1 GB swap'in yıllık yazma toplamı bunun yanında damladır. ZRAM kurun veya 1 GB sigorta swap'i bırakın.

Swap = RAM x 2 abartısı. 16 GB RAM'li VDS'de 32 GB swap yer israfıdır; çok dolu swap restart sırasında swapoff'u dakikalarca sürdürür. 1-2 GB sigorta yeterli.

swappiness 60 bırakmak (DB sunucusu). MariaDB innodb buffer pool RAM'in %70'ini kaplıyor olabilir; swappiness 60'ta kernel buffer pool sayfalarını swap'a atar — sorgu latency artar. 10'a düşürün.

tmpfs /tmp swap'a aktarılıyor. /tmp tmpfs olarak mount edilmişse büyük dosyalar (CI/CD, encoding) RAM'i doldurup swap'a taşınabilir. df -h /tmp ile kontrol edin; size limit koyun veya disk-tabanlı /tmp tercih edin.

ZRAM ve disk swap aynı priority. ZRAM her zaman yüksek priority (default 100), disk swap fallback (default -2) olmalı; aksi halde kernel rastgele seçer.

Swap dosyasını 644 izinde bırakmak. chmod 600 unutulursa swap aktive olmaz. Mutlaka 600 olmalı.

Büyükweb VDS Tarafı: Pratik Standart Kurulum

E5-V4 VDS paketinizde NVMe SSD ve 4-16 GB RAM standarttır. Tipik kurulumlar:

  1. 8 GB RAM VDS: 1 GB swap dosyası + ZRAM %50. swappiness=10. vfs_cache_pressure=50.
  2. 4 GB RAM VDS (küçük WP): 2 GB swap + ZRAM %50. swappiness=10.
  3. 16 GB RAM VDS (yoğun WooCommerce/DB): 1 GB swap + ZRAM %25. swappiness=10. MariaDB OOM korumalı.

cPanel/Plesk kurulu bir VDS sunucu'da swap zaten otomatik gelir; swappiness'i kontrol edin. Ham Linux'ta yukarıdaki adımları uygulayın. Sanal sunucu sayfasında paket karşılaştırması mevcuttur.

Sık Sorulan Sorular

Swap olmasa olur mu?

8 GB ve üzeri RAM'li bir VDS'de swap olmadan da çoğu zaman çalışırsınız; ama OOM Killer riskine giriyorsunuz. RAM'iniz beklenmedik bir anda dolarsa (memory leak, viral trafik, batch iş yükü) kernel rastgele bir süreci öldürür. 1-2 GB sigorta swap'i yer maliyeti düşük, kazancı yüksek bir önlemdir. Production sunucularda her zaman tavsiye edilir.

ZRAM mi yoksa swap dosyası mi?

İki seçenek yarışmaz, tamamlayıcıdır. ZRAM hızlı (RAM içi sıkıştırma), swap dosyası disk fallback'tir. İdeal kurulum: ZRAM yüksek priority + swap dosyası düşük priority. Kernel önce ZRAM'i kullanır, ZRAM dolarsa swap dosyasına yazar. NVMe SSD'li bir E5-V4 VDS'de bu kombinasyon hem hızlı hem güvenlidir.

swappiness 10 mu 60 mi olmalı?

MariaDB, PostgreSQL veya yoğun PHP-FPM sunucusunda 10. Genel amaçlı desktop ya da hafif server'da default 60 kalabilir. 10'a düşürmenin avantajı RAM'in sonuna kadar dolmadan kernel'in swap'a kaçmamasıdır; veritabanı buffer pool sayfaları swap'a yazılmazsa sorgu hızı korunur. 60'da kernel proaktif swap'a iter; DB sunucusunda bu istenmeyen latency'dir.

OOM Killer hangi süreci öldürür?

oom_score puanı en yüksek olan. Skor; süreç RAM kullanımı + uzun süre çalışma + kullanıcı uid'sinin root olmaması gibi faktörlere göre belirlenir. oom_score_adj ile manuel ayarlama yapılır: -1000 = "asla öldürme", +1000 = "ilk hedef". Kritik servisleri (DB, web sunucu) systemd unit override ile -1000 yapın.

SSD'de swap zarar verir mi?

Modern NVMe SSD'lerde 600 TBW+ ömür sertifikası standarttır. 1 GB swap dosyasının günlük swap-out hacmi ortalama bir VDS'de 50-200 MB civarıdır; yıllık 18-73 GB yazar — toplam 600 TBW ömrün yanidaki bir damladır. SSD ömrü korkusu pratik değildir. Yine de yazmadan kaçınmak isterseniz ZRAM (RAM'de sıkıştırma) kullanın.

Hibernate için swap kaç GB olmalı?

Hibernate (suspend-to-disk), RAM içeriğini swap'a yazıp sistemi tamamen kapatır; yeniden açılışta swap'tan RAM'e geri okunur. Hibernate için swap >= RAM olmalı. Ancak sunucuda hibernate kullanılmaz (uptime kritik); bu kural sadece dizüstü/desktop senaryosudur.

VDS'de swap nasıl eklerim, downtime gerekir mi?

Yukarıdaki "Adım Adım Swap Dosyası Oluşturma" bölümündeki komutları uygulayın. Downtime yoktur — sistem çalışır vaziyette swap aktive olur. fstab'a eklemek de çalışma sırasında yapılabilir. Tek dikkat etmeniz gereken disk yeri: df -h / ile root partition'da yeterli yer olduğundan emin olun.

Swap aktifken makinem yavaş, ne yapmalıyım?

vmstat 1 ile si/so izleyin. Sürekli si/so >0 ise RAM yetmiyordur — RAM artırın veya yükü azaltın (PHP-FPM pm.max_children düşür, MariaDB buffer pool küçült). si/so 0 ama swap dolu görünüyorsa eski page-out sayfalardır, performansı etkilemez. free -h'da "available" metriği izlenir, "used" değil.

Swap dosyasını boyutunu değiştirebilir miyim?

Evet, yukarıdaki "Swap Dosyasını Büyütme veya Silme" bölümüne bakın. Önemli olan önce swapoff ile kapatmak, boyut değiştirip yeniden mkswap + swapon yapmaktır. Çalışma sırasında yapılabilir; ancak swap doluyken kapatmak (swapoff) RAM'e geri yüklenmesi için yer olmasını gerektirir — RAM doluyken swapoff reddedilir.


İlgili Büyükweb Hizmetleri

  • E5-V4 VDS — NVMe SSD'li yeni nesil Xeon VDS, swap + ZRAM kurulumuna ideal, 8 paket
  • VDS Sunucu — Genel VDS detayları ve Türkiye lokasyon
  • Sanal Sunucu — VDS bilgi sayfası, paket karşılaştırma
  • E-Ticaret VDS — Yoğun WooCommerce için RAM/swap optimize paketler
  • cPanel Web Hosting — Swap host yönetiminde, son kullanıcı dokunmadan çalışır

Sorularınız için 0850 302 60 70 numaralı satış öncesi destek numaramıza ulaşabilir veya iletişim sayfamıza yazabilirsiniz.

Linux & Komut Satırı İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#swap alanı#swap Linux#sanal bellek#mkswap#swapon#swappiness#Linux performans#RAM optimizasyon

Bu yazıyı paylaş

WhatsApp0850 302 60 70