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

- Swap Memory Doluyor: Nedenleri, Teşhis Adımları ve Kalıcı Çözümler (Linux Sunucular için)
- Swap Nedir, Neden Doluyor?
- Hızlı Kontrol Listesi (5 Dakikada)
- Nedenler (Gerçek Dünya Senaryoları)
- Teşhis: Derinlemesine
- 1) Kullanım Profili ve Cache
- 2) Swappiness Etkisi
- 3) Suçlu Süreçleri İzleyin
- Çözümler (Kısa ve Uzun Vadeli)
- A) Swap’i Temizlemek (Acil Durum)
- B) Swappiness’i Uygun Seviyeye Çekmek
- C) Swap Alanını Büyütmek (Ubuntu/Debian örneği)
- D) zswap / zram ile Sıkıştırılmış Swap
- E) Uygulama ve Servis Tuning (WordPress Odaklı)
- F) Güvenlik ve Gizlilik
- Ne Zaman Donanıma (RAM) Gitmeli?
- SSS
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)
-
Genel bellek ve swap kullanımını görün:
-
Şu an en çok RAM yiyen süreçleri listeleyin:
-
Sistemde yoğun swap olup olmadığını gözlemleyin:
-
OOM killer ve bellek hatalarını kontrol edin:
-
Swappiness değerini öğrenin:
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):
-
Kalıcı ayar:
/etc/sysctl.conf
dosyasına satır ekleyin: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):
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)
-
Mevcut durumu kontrol edin:
swapon --show
-
Swap’i kapatın:
sudo swapoff -a
-
Yeni dosya oluşturun (ör. 4G):
-
Kalıcı yapmak için
/etc/fstab
’a ekleyin:(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