WordPress, yazılım ve IT üzerine notlar
Anasayfa » Sunucu & Linux » Linux'ta swap nedir, ne kadar olmalı ve sunucuda gerçekten gerekli mi?

Linux'ta swap nedir, ne kadar olmalı ve sunucuda gerçekten gerekli mi?

İçindekiler
  1. Swap ne işe yarar?
  2. Swap kullanımı ne zaman sorundur?
  3. Ne kadar swap?
  4. Küçük bir VPS'e swap eklemek
  5. swappiness: Çekirdek swap'ı ne kadar istekle kullansın?
  6. Swap'ı tamamen kapatmak?
  7. Özet

Swap, diskte ayrılmış ve fiziksel bellek (RAM) dolduğunda ya da çekirdek gerekli gördüğünde kullanılan bir alandır. Bellekteki az kullanılan sayfalar diske taşınır ve yer açılır. Bu sayfalara tekrar ihtiyaç duyulduğunda diskten geri okunur.

Diskin RAM'den yüzlerce, hatta binlerce kat yavaş olduğunu düşünürseniz, swap'ın bir performans aracı olmadığı açıktır. Swap bir emniyet sübabıdır.

Swap ne işe yarar?

1. Ani bellek baskısında çökmeyi önler. Bir yedekleme betiği ya da beklenmedik bir trafik artışı belleği kısa süreliğine aşarsa, swap yoksa çekirdeğin OOM killer'ı devreye girer ve bir süreci, genellikle veritabanını, zorla sonlandırır. Swap varsa sistem yavaşlar ama çalışmaya devam eder.

2. Atıl belleği değerlendirir. Bir sunucuda açılışta yüklenen ama neredeyse hiç kullanılmayan servisler ve kütüphaneler vardır. Çekirdek bunları swap'a taşıyarak, sık kullanılan veriler ve disk önbelleği için RAM'de yer açabilir. Bu, swap'ta biraz veri görmenin neden sorun olmadığını açıklar.

3. Uyku moduna geçiş (hibernation). Masaüstü sistemlerde bellekteki her şey swap'a yazılır. Sunucularda bu kullanılmaz.

Swap kullanımı ne zaman sorundur?

Swap'ta birkaç yüz megabayt veri görmek, tek başına bir sorun değildir. Önemli olan, sürekli bir trafik olup olmadığıdır:

vmstat 2
procs -----------memory---------- ---swap-- -----io----
 r  b   swpd   free   buff  cache   si   so    bi    bo
 1  0  51200 180000  42000 2100000    0    0     5    20
 3  2 812000  40000   8000  310000  420  980  1600  2400
  • si (swap in) ve so (swap out) sütunları sürekli sıfırsa: Swap'ta veri olsa bile şu anda kullanılmıyor. Sorun yok.
  • Bu sütunlarda sürekli hareket varsa (ikinci satır gibi): Sistem bellekle diske sürekli veri taşıyor. Buna thrashing denir ve sunucu çok yavaşlar. Gerçek bir bellek sıkıntısı var demektir. Çözüm daha fazla swap değil, bellek kullanımını azaltmak ya da RAM eklemektir.

Ne kadar swap?

Eski "RAM'in iki katı" kuralı, belleğin çok pahalı ve küçük olduğu dönemlerden kalma. Bugün sunucular için makul bir yaklaşım:

RAM          Önerilen swap
≤ 2 GB       RAM kadar
2 – 8 GB     RAM'in yarısı
8 – 64 GB    4 GB civarı
> 64 GB      Birkaç GB, iş yüküne göre

Amaç, belleği ikiye katlamak değil, ani baskılarda sisteme biraz nefes aldırmaktır.

Küçük bir VPS'e swap eklemek

Bulut sağlayıcılarının sunduğu küçük sanal sunucuların pek çoğu swap olmadan gelir. Bir swap dosyası eklemek birkaç dakika sürer:

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Kalıcı olması için /etc/fstab dosyasına ekleyin:

/swapfile none swap defaults 0 0

Kontrol edin:

swapon --show
free -h

chmod 600 adımını atlamayın. Swap dosyası bellekteki verilerin, yani şifrelerin ve oturum bilgilerinin de diskteki kopyasını içerebilir. Başkaları tarafından okunmamalıdır.

Not: Bazı dosya sistemlerinde (örneğin Btrfs) ya da bazı ortamlarda fallocate ile oluşturulan dosya swap olarak kullanılamayabilir. Bu durumda dd if=/dev/zero of=/swapfile bs=1M count=2048 komutu aynı işi görür.

swappiness: Çekirdek swap'ı ne kadar istekle kullansın?

vm.swappiness değeri, çekirdeğin bellek baskısı altında dosya önbelleğini boşaltmak ile uygulama belleğini swap'a taşımak arasındaki tercihini belirler. 0 ile 200 arasında bir değerdir. Varsayılan genellikle 60'tır.

cat /proc/sys/vm/swappiness
  • Düşük değer (örneğin 10): Çekirdek uygulamaları RAM'de tutmayı tercih eder, önce disk önbelleğini boşaltır. Veritabanı sunucuları ve gecikmeye duyarlı uygulamalar için sık önerilir.
  • Yüksek değer: Atıl uygulama belleği daha istekle swap'a taşınır, disk önbelleğine daha fazla yer kalır.

Değiştirmek için:

sysctl vm.swappiness=10
echo "vm.swappiness=10" > /etc/sysctl.d/99-swappiness.conf

Bu ayar sihirli bir hızlandırıcı değildir. Çoğu sunucu için varsayılan değer de iyi çalışır. Değiştirmeden önce gerçekten bir sorun yaşadığınızdan emin olun.

Swap'ı tamamen kapatmak?

Bazı ortamlarda swap bilinçli olarak kapatılır. Örneğin Kubernetes uzun süre düğümlerde swap'ın kapalı olmasını istedi. Bunun sebebi, bellek sınırlarının öngörülebilir olmasıdır. Ama sıradan bir web ya da veritabanı sunucusunda swap'ı kapatmak, ani bellek baskılarında yavaşlama yerine doğrudan bir sürecin öldürülmesi anlamına gelir. Çoğu durumda küçük bir swap alanı tutmak daha güvenlidir.

Özet

Swap'ta biraz veri görmek normaldir. Sürekli swap trafiği ise gerçek bir bellek sıkıntısının işaretidir. Küçük bir sunucuya birkaç gigabaytlık swap dosyası eklemek, OOM killer'ın veritabanınızı gece yarısı sonlandırmasını önlemenin en ucuz yoludur. Ama swap'a sürekli dayanan bir sunucunun asıl ihtiyacı, daha fazla RAM ya da daha az bellek tüketen bir yapılandırmadır.

Tezcan Kabakçı
Hosting teknik destek uzmanı ve WordPress uzmanı. 2024'ten beri bir hosting şirketinde teknik destek bölümünde çalışıyor; WordPress, DNS ve e-posta sorunlarını her gün yakından görüyor. YouTube kanalı.
Bu yazı 11 Temmuz 2026 tarihinde Sunucu & Linux kategorisinde yayınlandı.
Yeni yazılar e-postanıza gelsin

Ayda birkaç e-posta; istediğiniz an tek tıkla ayrılabilirsiniz.

Videolu anlatımlar YouTube'da
Sunucu ve WordPress sorunlarını kısa videolarla anlattığım kanala abone olabilirsiniz. ▶ Kanala abone ol

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yazın

Yorumlar onaylandıktan sonra yayımlanır. Bağlantı içeren yorumlar spam olarak değerlendirilebilir.