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

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

Linux'ta swap dosyasi nasil olusturulur, ZRAM nedir, swappiness 10 mu 60 mi, OOM Killer hangi sureci oldurur? VDS sahipleri icin pratik adim adim 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 ihtiyacin var mi? 8 GB RAM'lik bir VDS'de cogu zaman aslinda hayir — ama OOM Killer'a karsi sigorta olarak evet. "Swap aciksa SSD'm yanar mi?" "ZRAM mi swap dosyasi mi?" "swappiness 10 mu 60 mi?" Pratikte bu sorulara verilecek cevap is yukune ve diske gore degisir. Bu rehber E5-V4 VDS gibi NVMe SSD tabanli bir Linux sunucuda swap'i nasil dogru yapilandiracaginizi adim adim gosterir.

Hosting kullanicisina not: cPanel hosting ortamlarinda swap host seviyesinde yonetilir; son kullanici sysctl/swapfile uzerinde yetkili degildir. Bu rehber root erisimi olan VDS sahipleri icindir.

Swap Nedir, Kernel Tam Olarak Ne Yapar?

Linux belleginde iki tur sayfa vardir: file-backed (disk uzerindeki bir dosyaya bagli, ornegin mmap edilmis kutuphane) ve anonymous (heap, stack, malloc). RAM dolmaya baslayinca kernel sayfalama (paging) ile az kullanilan sayfalari diske gonderir — bu islemin adi page-out'tur. Tekrar erisilince page-in olur ve sayfa diskten RAM'e geri yuklenir.

File-backed sayfalar zaten diskte bir kopyaya sahip oldugu icin RAM'den dusurulebilir; ihtiyac olunca yeniden okunur. Anonymous sayfalarin diskte kopyasi yoktur — iste bu yuzden swap alani gerekir. Swap, anonymous sayfalarin disardaya tasinabilecegi tek yerdir. Swap yoksa anonymous bellek dolduktan sonra kernel OOM Killer'i tetikler ve buyuk bir sureci oldurur.

vm.swappiness sysctl parametresi kernel'in ne kadar agresif swap kullanacagini belirler. Default 60'tir; veritabani yogun sunucuda 10 onerilir. Bunu birazdan detayli isleyecegiz.

Swap, ZRAM ve ZSWAP: Hangisi Ne Zaman?

Modern Linux'ta uc secenek vardir; cogu kullanici sadece birinciyi bilir.

Tur Nasil Calisir Avantaj Dezavantaj Buyukweb Onerisi
Swap (disk) Sayfalari diskteki dosyaya/partition'a yazar Klasik, her dagitimda var Disk I/O latency, SSD yazma NVMe SSD'de OK; sigorta amacli 1-2 GB
ZRAM Sayfalari RAM icinde LZ4 ile sikistirip yine RAM'de tutar Cok hizli, SSD yazmaz, ~3:1 sikistirma Aslinda RAM kullanir NVMe VDS'de bile bonus; ek tampon
ZSWAP RAM icinde sikistirilmis cache + disk swap'a fallback En iyi karma; sicak sayfa RAM'de, soguk diskte Konfigurasyon biraz zor Ileri kullanici, opsiyonel

Pratik secim: E5-V4 VDS NVMe SSD'li bir sunucuda once 1-2 GB swap dosyasi acin (OOM sigortasi). Stres altinda surekli swap-in/swap-out gozlemlerseniz uzerine ZRAM ekleyin. ZSWAP'a gerek kalmadan cogu workload icin yeterli olur.

HDD uyarisi: Eski HDD diskte swap korkunctur — page-in latency 10-15 ms, sistem kilitlenmis gibi gorunur. Buyukweb VDS'lerinde NVMe SSD standart oldugu icin bu sorun yasanmaz; ama 3rd-party HDD'li sunucuda swap yerine ZRAM tercih edin.

Swap Dosyasi mi Swap Partition'i mi?

Eski rehberlerde "swap partition" agirlikli anlatilir. Modern systemd dagitimlarinda (Ubuntu 22.04, Debian 12, AlmaLinux 9, Rocky Linux 9) onerilen yol swap dosyasi'dir.

Kriter Swap Dosyasi Swap Partition
Esneklik fallocate ile boyut degistir Disk yeniden bolme gerekli
Kurulum 5 dakika LVM/parted gerekli
Performans Modern kernelde ayni Tarihsel olarak az hizli
Onerilen senaryo Cogu VDS, cloud, container Hibernate isteyen workstation

VDS aldiginizda partition'lar zaten kurulu gelir; swap partition acmak icin diski tekrar bolmek gereksizdir. Swap dosyasi yetisir.

Swap Boyutu: Eski "RAM x 2" Kurali Olu

Cok eski Linux rehberlerinde "RAM'in 2 kati swap" yazar. Bu kural 90'larda 32-64 MB RAM'li makinelerde anlamliydi; bugun 8-16 GB RAM'li sunucuda 16-32 GB swap bos yer israfidir.

Modern oneri:

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 yapmazsiniz (uptime kritik); o yuzden hibernate sutununu yok sayin. 8 GB RAM'li bir VDS'de 1 GB swap OOM sigortasi olarak yeterlidir. 16 GB ve uzeri RAM'li VDS'de swap'i 1 GB'da birakin veya tamamen ZRAM'e gecin.

Adim Adim: Swap Dosyasi Olusturma (Ubuntu 22.04 / Debian 12)

Asagidaki ornek 2 GB swap dosyasi olusturur. Hicbir 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 sonrasi swap'in kalici olmasi icin /etc/fstab dosyasina ekleyin:

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

Test: sudo swapoff /swapfile && sudo swapon -a ile kapatip yeniden mount edin; hata vermezse fstab dogrudur.

Swap Dosyasini Buyutme 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 Istahini Ayarla

vm.swappiness 0 ile 100 arasinda bir degerdir. Yuksek deger kernel'in swap'i daha agresif kullanmasi anlamina gelir; dusuk deger ise RAM'i sonuna kadar dolduruncaya kadar swap'a dokunulmamasini soyler.

Deger Davranis Tipik Kullanim
0 Swap'i sadece OOM kacinilmazligi durumunda kullan Cok agresif; sunucuda OOM riski
10 Cok az swap, RAM dolana kadar bekle Veritabani / web sunucu onerilen
60 Default (Ubuntu, Debian, RHEL) Genel amacli desktop/server
100 Esit oncelik, agresif page-out Latency toleransli batch is yukleri

Buyukweb VDS onerisi: MariaDB/PostgreSQL ag yogun bir VDS sunucu'da 10. WordPress + WooCommerce karisik VDS'de 30-40 makul. Multi-tenant geliştirme ortaminda 60 kalsin.

# 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 donusturecegini belirler. Default 100. Veritabani sunucusunda 50 onerilir — boylelikle dosya metadata cache'i RAM'de daha uzun durur, sorgu suresi azalir.

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 icinde sikistirilmis bir blok cihaz olusturur ve onu swap olarak kullanir. SSD yazma yapmadigi icin NVMe omru sorunu olmaz; LZ4 sikistirma ile genelde 2.5-3.5x sikistirma orani 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 dosyasinin priority'sinden yuksek olmalidir (default zaten boyledir). Kernel once ZRAM'i doldurur, sigara icmediginiz 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 Sureci Oldurur?

RAM ve swap dolarsa kernel Out-Of-Memory Killer'i tetikler ve "uzun vadede en cok yer kaplayan, en az kritik" gordugu bir sureci oldurur. Karari /proc/<pid>/oom_score (0-1000 arasi puan) belirler. Yuksek skor = "once oldurulmeye aday".

OOM olayini gormek icin:

# 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 (oldurulmemesi anlamina gelir):

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

Acilan editore:

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

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

Uyari: OOM Killer'i devre disi birakmak (vm.oom_kill_allocating_task=0) sistem stabilitesini bozar — kritik servisleri korumak cozum, OOM'u kapatmak degildir.

Swap Performansini Izleme

Swap kullaniminin var olmasi sorun degildir; surekli artmasi 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 Davranis Tipik Etki
0 RAM sonuna kadar dolar, page-out yok OOM Killer riski yuksek
10 %95+ dolduktan sonra swap DB sunucu ideal
60 (default) %80+ dolunca swap Genel amacli
100 %50+ dolunca agresif swap Latency toleransli batch

Sik Yapilan Hatalar

Swap = 0 (SSD omru kaygisi). "SSD yazmasin" diye swap'i tamamen kapatmak OOM riskini katlar. NVMe omru tipik 600 TBW; 1 GB swap'in yillik yazma toplami bunun yaninda damladir. ZRAM kurun veya 1 GB sigorta swap'i birakin.

Swap = RAM x 2 abartisi. 16 GB RAM'li VDS'de 32 GB swap yer israfidir; cok dolu swap restart sirasinda swapoff'u dakikalarca surdurur. 1-2 GB sigorta yeterli.

swappiness 60 birakmak (DB sunucusu). MariaDB innodb buffer pool RAM'in %70'ini kapliyor olabilir; swappiness 60'ta kernel buffer pool sayfalarini swap'a atar — sorgu latency artar. 10'a dusurun.

tmpfs /tmp swap'a aktariliyor. /tmp tmpfs olarak mount edilmisse buyuk dosyalar (CI/CD, encoding) RAM'i doldurup swap'a tasinabilir. df -h /tmp ile kontrol edin; size limit koyun veya disk-tabanli /tmp tercih edin.

ZRAM ve disk swap ayni priority. ZRAM her zaman yuksek priority (default 100), disk swap fallback (default -2) olmali; aksi halde kernel rastgele secer.

Swap dosyasini 644 izinde birakmak. chmod 600 unutulursa swap aktive olmaz. Mutlaka 600 olmali.

Buyukweb VDS Tarafi: Pratik Standart Kurulum

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

  1. 8 GB RAM VDS: 1 GB swap dosyasi + ZRAM %50. swappiness=10. vfs_cache_pressure=50.
  2. 4 GB RAM VDS (kucuk WP): 2 GB swap + ZRAM %50. swappiness=10.
  3. 16 GB RAM VDS (yogun WooCommerce/DB): 1 GB swap + ZRAM %25. swappiness=10. MariaDB OOM korumali.

cPanel/Plesk kurulu bir VDS sunucu'da swap zaten otomatik gelir; swappiness'i kontrol edin. Ham Linux'ta yukaridaki adimlari uygulayin. Sanal sunucu sayfasinda paket karsilastirmasi mevcuttur.

Sik Sorulan Sorular

Swap olmasa olur mu?

8 GB ve uzeri RAM'li bir VDS'de swap olmadan da cogu zaman calisirsiniz; ama OOM Killer riskine giriyorsunuz. RAM'iniz beklenmedik bir anda dolarsa (memory leak, viral trafik, batch is yuku) kernel rastgele bir sureci oldurur. 1-2 GB sigorta swap'i yer maliyeti dusuk, kazanci yuksek bir onlemdir. Production sunucularda her zaman tavsiye edilir.

ZRAM mi yoksa swap dosyasi mi?

Iki secenek yarismaz, tamamlayicidir. ZRAM hizli (RAM ici sikistirma), swap dosyasi disk fallback'tir. Ideal kurulum: ZRAM yuksek priority + swap dosyasi dusuk priority. Kernel once ZRAM'i kullanir, ZRAM dolarsa swap dosyasina yazar. NVMe SSD'li bir E5-V4 VDS'de bu kombinasyon hem hizli hem guvenlidir.

swappiness 10 mu 60 mi olmali?

MariaDB, PostgreSQL veya yogun PHP-FPM sunucusunda 10. Genel amacli desktop ya da hafif server'da default 60 kalabilir. 10'a dusurmenin avantaji RAM'in sonuna kadar dolmadan kernel'in swap'a kacmamasidir; veritabani buffer pool sayfalari swap'a yazilmazsa sorgu hizi korunur. 60'da kernel proaktif swap'a iter; DB sunucusunda bu istenmeyen latency'dir.

OOM Killer hangi sureci oldurur?

oom_score puani en yuksek olan. Skor; surec RAM kullanimi + uzun sure calisma + kullanici uid'sinin root olmamasi gibi faktorlere gore belirlenir. oom_score_adj ile manuel ayarlama yapilir: -1000 = "asla oldurme", +1000 = "ilk hedef". Kritik servisleri (DB, web sunucu) systemd unit override ile -1000 yapin.

SSD'de swap zarar verir mi?

Modern NVMe SSD'lerde 600 TBW+ omur sertifikasi standarttir. 1 GB swap dosyasinin gunluk swap-out hacmi ortalama bir VDS'de 50-200 MB civaridir; yillik 18-73 GB yazar — toplam 600 TBW omrun yanidaki bir damladir. SSD omru korkusu pratik degildir. Yine de yazmadan kacinmak isterseniz ZRAM (RAM'de sikistirma) kullanin.

Hibernate icin swap kac GB olmali?

Hibernate (suspend-to-disk), RAM icerigini swap'a yazip sistemi tamamen kapatir; yeniden acilista swap'tan RAM'e geri okunur. Hibernate icin swap >= RAM olmali. Ancak sunucuda hibernate kullanilmaz (uptime kritik); bu kural sadece dizustu/desktop senaryosudur.

VDS'de swap nasil eklerim, downtime gerekir mi?

Yukaridaki "Adim Adim Swap Dosyasi Olusturma" bolumundeki komutlari uygulayin. Downtime yoktur — sistem calisir vaziyette swap aktive olur. fstab'a eklemek de calisma sirasinda yapilabilir. Tek dikkat etmeniz gereken disk yeri: df -h / ile root partition'da yeterli yer oldugundan emin olun.

Swap aktifken makinem yavas, ne yapmaliyim?

vmstat 1 ile si/so izleyin. Surekli si/so >0 ise RAM yetmiyordur — RAM artirin veya yuku azaltin (PHP-FPM pm.max_children dusur, MariaDB buffer pool kucult). si/so 0 ama swap dolu gorunuyorsa eski page-out sayfalardir, performansi etkilemez. free -h'da "available" metrigi izlenir, "used" degil.

Swap dosyasini boyutunu degistirebilir miyim?

Evet, yukaridaki "Swap Dosyasini Buyutme veya Silme" bolumune bakin. Onemli olan once swapoff ile kapatmak, boyut degistirip yeniden mkswap + swapon yapmaktir. Calisma sirasinda yapilabilir; ancak swap doluyken kapatmak (swapoff) RAM'e geri yuklenmesi icin yer olmasini gerektirir — RAM doluyken swapoff reddedilir.


Ilgili Buyukweb Hizmetleri

  • E5-V4 VDS — NVMe SSD'li yeni nesil Xeon VDS, swap + ZRAM kurulumuna ideal, 8 paket
  • VDS Sunucu — Genel VDS detaylari ve Turkiye lokasyon
  • Sanal Sunucu — VDS bilgi sayfasi, paket karsilastirma
  • E-Ticaret VDS — Yogun WooCommerce icin RAM/swap optimize paketler
  • cPanel Web Hosting — Swap host yonetiminde, son kullanici dokunmadan calisir

Sorulariniz icin 0850 302 60 70 numarali destek hattimiza veya iletisim sayfamiza 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ş