Swap Memory Doluyor: Nedenleri, Teşhis Adımları ve Kalıcı Çözümler (Linux Sunucular için)

Swap Nedir, Neden Doluyor?

Swap; RAM yetersiz kaldığında veya çekirdek (kernel) seyrek kullanılan sayfaları RAM’den çıkarıp diske yazmaya karar verdiğinde devreye giren disk alanıdır. Linux, RAM hâlâ boş olsa bile önbellek/verimlilik için bazı sayfaları swap’a taşıyabilir; bu anormal değildir. Sorun, sistemin sürekli swap yapması (thrashing) ve I/O yükünün artmasıdır. wiki.archlinux.org+1

Swappiness parametresi (vm.swappiness), çekirdeğin swap’a yönelme eğilimini belirler (0–100). Düşük değer swap’ı azaltır, yüksek değer artırır. phoenixNAP | Global IT Services+1


Hızlı Kontrol Listesi (5 Dakikada)

  1. Genel bellek ve swap kullanımını görün:

    free -h && swapon --show
  2. Şu an en çok RAM yiyen süreçleri listeleyin:

    ps aux --sort=-%mem | head -n 15
  3. Sistemde yoğun swap olup olmadığını gözlemleyin:

    vmstat 3
    # si/so sütunları swap-in/swap-out hızlarını gösterir
  4. OOM killer ve bellek hatalarını kontrol edin:

    dmesg | egrep -i 'out of memory|oom' || journalctl -k | egrep -i 'out of memory|oom'
  5. Swappiness değerini öğrenin:

    cat /proc/sys/vm/swappiness

Not: Linux’un bir miktar swap kullanması normaldir; sürekli yüksek si/so ve yüksek disk I/O görüyorsanız problem var demektir. Unix & Linux Stack Exchange


Nedenler (Gerçek Dünya Senaryoları)

  • RAM yetersizliği (trafik artışı, ağır sorgular, büyük PHP process’leri).

  • Yanlış swappiness (çok yüksek ise gereksiz swap). Red Hat Learning

  • Servis yapılandırması (ör. PHP-FPM pm.max_children, MySQL/InnoDB tamponları, Elasticsearch/Redis).

  • Bellek sızıntısı (uygulama veya eklentiler).

  • Hibernation/suspend gereksinimi (swap boyutu planlamasını etkiler). wiki.archlinux.org


Teşhis: Derinlemesine

1) Kullanım Profili ve Cache

Linux, seyrek kullanılan sayfaları swap’a taşıyıp RAM’i sayfa önbelleği için serbest bırakabilir; bu, performans optimizasyonudur. Panik yapmadan önce swap’in ne kadar aktif kullanıldığına bakın (yoğun si/so). Ask Ubuntu+1

2) Swappiness Etkisi

  • Geçici deneme (yeniden başlatmaya kadar):

    sudo sysctl vm.swappiness=10
  • Kalıcı ayar:
    /etc/sysctl.conf dosyasına satır ekleyin:

    vm.swappiness=10

    Ardından: sudo sysctl -p
    (Değerler 0–100; düşük değer genelde web sunucuları için daha mantıklıdır.) phoenixNAP | Global IT Services

Uyarı: Swappiness’ı aşırı düşürmek RAM baskısını gizlemez; RAM yetmiyorsa swap yine dolar ve OOM riski doğar. Kaynağı bulmak ve gerektiğinde RAM’i artırmak esastır. docs.kernel.org

3) Suçlu Süreçleri İzleyin

top, htop, smem ile süreç bazında kullanım. MySQL, PHP-FPM, Redis, Elasticsearch gibi servisler piklerde swap’a itebilir. “RAM boşken swap var” durumu genellikle seyrek sayfalar ile ilgilidir; bu normaldir. Server Fault


Çözümler (Kısa ve Uzun Vadeli)

A) Swap’i Temizlemek (Acil Durum)

Swap’i kapatıp açmak swap’teki sayfaları RAM’e taşır (yeterli RAM varsa):

sudo swapoff -a
sudo swapon -a

Bu işlem geçicidir; kök nedeni çözmez. Red Hat

B) Swappiness’i Uygun Seviyeye Çekmek

  • Web uygulamaları ve veritabanı ağırlıklı iş yüklerinde sıklıkla 10–20 aralığı tercih edilir. Test ederek en uygun değeri bulun. phoenixNAP | Global IT Services

C) Swap Alanını Büyütmek (Ubuntu/Debian örneği)

  1. Mevcut durumu kontrol edin: swapon --show

  2. Swap’i kapatın: sudo swapoff -a

  3. Yeni dosya oluşturun (ör. 4G):

    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
  4. Kalıcı yapmak için /etc/fstab’a ekleyin:

    /swapfile none swap sw 0 0

    (Detaylı adımlar ve varyasyonlar için rehberler.) digitalocean.com+2linuxize.com+2

D) zswap / zram ile Sıkıştırılmış Swap

  • zswap: Disk yerine önce RAM içinde sıkıştırılmış cache kullanır; I/O’yu azaltabilir.

  • zram: RAM içinde sıkıştırılmış blok aygıt oluşturur; düşük RAM’li VPS’lerde faydalı.
    Kurulum ve etkileri için dağıtım belgelerine bakın. wiki.archlinux.org+1

E) Uygulama ve Servis Tuning (WordPress Odaklı)

  • PHP-FPM: pm.max_children, pm.max_requests değerlerini izleyip düşürün/dengeleyin.

  • MySQL/InnoDB: innodb_buffer_pool_size’ı mevcut RAM’e göre ayarlayın; aşırı büyükse RAM baskısı yaratır.

  • Object Cache: Redis/Memcached kullanın ama bellek sınırlarını (maxmemory) koyun.

  • Cron/Queue işler (WP-CLI, yedekleme, indeksleme): pik saatlerde değil, yoğun olmayan saatlere alın.
    (Bu ayarlar swap’i doluran bellek baskısını kökten azaltır; Linux’un swap davranışına ilişkin genel kaynaklarla birlikte düşünün.) Unix & Linux Stack Exchange

F) Güvenlik ve Gizlilik

Swap’te hassas veriler kalabilir; şifreli swap tercih edin (özellikle fiziksel sunucularda/laptaplarda). wiki.archlinux.org


Ne Zaman Donanıma (RAM) Gitmeli?

  • Swappiness düşürmenize, servisleri optimize etmenize ve zswap/zram denemenize rağmen vmstat’te sürekli yüksek si/so, yüksek I/O bekleme, OOM kayıtları görüyorsanız: RAM artışı en temiz çözümdür. Arch Wiki ve topluluk rehberleri de swap’ın RAM’in yerine geçmediğini, sadece tamamlayıcı olduğunu vurgular. wiki.archlinux.org


SSS

“RAM boşken neden swap kullanılıyor?”
Çekirdek, seyrek kullanılan sayfaları swap’e bırakarak RAM’i disk önbelleği için serbest tutabilir. Bu, normaldir ve performansı artırabilir. Sorun ancak sürekli aktif swap hareketi olduğunda başlar. Ask Ubuntu+1

“Swappiness’i 0 yaparsam swap tamamen kapanır mı?”
Hayır. Swappiness, eğilim parametresidir; swap’ı yok etmez. Zorunluluk doğarsa çekirdek yine swap kullanabilir. Unix & Linux Stack Exchange

İlginizi Çekebilir:500 Plesk\Exception\Database Hatası (SQLSTATE 2002) – Kesin Çözüm Rehberi
share Paylaş facebook pinterest whatsapp x print

Benzer İçerikler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Saviorhost İnternet Hizmetleri | © 2025 |