Sunucuda Swap Memory Ayarları: Performans Etkisi ve Doğru Değer
Swap ayarları sistemin çökmesini engeller ama yanlış kurguda ciddi yavaşlama yapar. Linux’ta doğru swap ölçümü ve ayar yöntemlerini öğrenin.
Swap (takas) memory, RAM dolduğunda işletim sisteminin bir kısmını diske sayfalayarak “OOM (Out of Memory)” riskini azaltan kritik bir bileşendir. Ancak swap’ın miktarı ve kullanım biçimi, özellikle VDS/VPS gibi paylaşımlı veya sınırlı I/O performansına sahip sunucularda ciddi performans farkı yaratır. Bu rehberde; Linux’ta swap ihtiyacını nasıl ölçtüğünüzü, en sık yapılan hataları ve performansı koruyacak somut ayar yaklaşımını adım adım öğreneceksiniz.
Amaç: RAM’i doğru kapasitede kullanırken swap’ı “kurtarıcı” rolünde tutmak; disk/IO darboğazına dönüşmesini engellemek.
Swap ne zaman kullanılır? Performansın kırıldığı nokta
Swap, Linux’un bellekteki sayfaları diske yazmasıyla devreye girer. Bu süreç, RAM’e kıyasla birkaç büyüklük farkında daha yavaş bir I/O yoluna dayanır. Bu yüzden swap aktifken genellikle şu belirtiler görülür:
- Sunucu yanıt sürelerinde dalgalanma (özellikle web istekleri)
- Uygulama gecikmesi (database / cache / background worker)
- Disk I/O kullanımında artış ve kuyruk (queue) büyümesi
- CPU’nun “bekleme” yerine I/O kaynaklı darboğaza düşmesi
Burada kritik ayrım şu: Swap “yedek” olduğu için değil, swap aşırıya kaçtığında performans düşer. Aynı anda çok sayıda sayfalanma (page-in/page-out) oluyorsa sistem “thrashing” durumuna girer.
Thrashing (aşırı sayfalama) nasıl anlaşılır?
Aşağıdaki metrikler, swap kullanımının “kontrollü” değil “sorunlu” olduğunu gösterir.
si/so(swap in/out) değerleri yüksek ve süreklivmstatçıktısında swap kolonu düzenli şekilde büyüriostatile disk aktifliği (util) yüksekken yanıt süreleri artar- Uygulama loglarında time-out, queue birikimi
Mevcut swap durumunu ölçme: Tahmin yerine veri
Doğru ayarı yapmanın ilk adımı, mevcut durumun doğru teşhisidir. Aşağıdaki komutlar swap’ın miktarını değil, kullanım davranışını görmenizi sağlar.
Swap boyutu ve kullanımı
- Swap toplamı ve kullanım:
free -h
Burada iki satır önemlidir: - Swap: Toplam swap - Used: Şu an diske yazılmış sayfa miktarı
Swap “var” ama kullanımı sıfıra yakınsa, çoğu zaman sadece koruma rolündedir.
Page-out / page-in davranışı (thrashing sinyali)
- 2 saniyede bir ölçüm (özet gözlem):
vmstat 2
Aranan alanlar:
- si (swap in): Diskten RAM’e okunan sayfalar
- so (swap out): RAM’den diske yazılan sayfalar
si/so sürekli yüksekse sistem swap’ı aktif olarak “çalışma yüzeyi” gibi kullanıyordur.
Disk I/O darboğazı var mı?
Swap’in performans etkisi çoğunlukla diskin IOPS/latency kapasitesinden gelir. Bu yüzden I/O’yu kontrol edin:
- CPU değil disk darboğazı mı?
iostat -x 2
Önemli göstergeler:
- await: Ortalama bekleme süresi
- svctm: Servis zamanı (varsa)
- util: Disk kullanım yüzdesi
Swap için doğru yaklaşım: “Miktarı büyütmek” çözüm değildir
Swap’ı otomatik büyütmek, RAM yetersizliğini disk üzerinden telafi etmeye çalışmak demektir. Bu; web uygulamalarında gecikme yaratır, veritabanı üzerinde bekleme sürelerini uzatır ve bazen log/queue birikimiyle daha da kötüleşir.
Swap ayarlarında hedef şudur: - RAM kapasitesi yeterli değilse bile sistemi “kurtaracak kadar swap” sunmak - Ama diske sürekli sayfalama yaptırmayacak sınırları korumak
Linux’ta swappiness (vm.swappiness) ne işe yarar?
vm.swappiness değeri, Linux’un swap’i ne kadar agresif kullanacağını belirler. Mantık basittir:
- Değer yükseldikçe swap’e daha erken yönelebilir
- Değer düşerse RAM’de tutmaya çalışır, swap daha geç devreye girer
Yanlış swappiness, “swap var ama sistem onu kullanıyor” gibi bir duruma yol açabilir.
Aşağıdaki komutla geçerli değeri görebilirsiniz:
- sysctl vm.swappiness
Güncel dosya üzerinden kontrol:
- /etc/sysctl.conf veya /etc/sysctl.d/*.conf
Somut ayar önerileri: Ne kadar swap? Hangi senaryoda?
Tek bir “her sunucu için doğru swap” yoktur; ancak işletimsel olarak uygulanabilir bir karar matrisi vardır. Aşağıdaki tablo, VDS/VPS üzerinde yaygın senaryolar için pratik bir başlangıç noktası sağlar.
Not: Değerleri üretime almadan önce staging veya düşük trafikli saatlerde test edin.
| Senaryo | Tipik davranış | Swap hedefi | swappiness yaklaşımı |
|---|---|---|---|
| RAM kullanımınız dengeli, swap hiç kullanılmıyor | si/so düşük, iostat normal | Küçük koruma swap (kayıp durumunda OOM önler) | Daha düşük/agresif olmayan değer |
| Zaman zaman piklerde swap kullanılıyor (kısa süreli) | so kısa süre artar, sonra düşer | Orta swap (piki kırmak için) | Daha kontrollü değer |
| Swap sürekli aktif (thrashing şüphesi) | si/so sürekli yüksek, await artıyor | Miktarı artırmak yerine RAM/konfig düzelt | swappiness düşürmek tek başına yeterli değildir |
| Database (MySQL/PostgreSQL) ağır, RAM kritik | buffer/cache ve work memory etkiler | Swap “plan B” olmalı | Agresif swap kullanımı engellenecek |
Swap miktarını “otomatik büyütme” yerine RAM kapasitesini düzeltin
Eğer swap sürekli kullanılıyorsa, genellikle kök neden şunlardan biridir: - Uygulama yanlış bellek boyutu ayarları (heap limit, buffer boyutu) - Database cache ve bağlantı sayısı (max connections) - Container/worker sayısı fazla - Yetersiz RAM (gerçek yükü kaldırmıyor)
Bu durumda yapılacak doğru aksiyon: 1) Önce uygulama ve database bellek ayarlarını düzeltin 2) Worker sayısını ve concurrency’i gerçek ihtiyaca çekin 3) Gerekirse RAM yükseltin 4) Swap’i sadece OOM güvenlik yastığı olarak tutun
Linux swap yapılandırma adımları (tetkik ve kalıcı uygulama)
Aşağıdaki adımlar, swap davranışını kontrol etmek için kullanılan tipik iş akışıdır.
1) Swap var mı? Dosya mı bölüm (partition) mi?
Swap dosyası (swapfile) kullanıyorsanız, genelde daha esnek olur. Mevcut swap’ların listesi:
- swapon --show
Çıktıda dosya/partition ve boyut görürsünüz.
2) Kalıcı ayarı doğrulayın
Kalıcılık için sistem yeniden başlatıldıktan sonra swap durumunu kontrol edin:
- free -h
- swapon --show
Ayrıca /etc/fstab üzerinden swap’ın kalıcı tanımı bulunabilir.
3) swappiness ayarını kalıcı yapma
Geçerli değeri gördükten sonra kalıcı değişiklik için sysctl.d yaklaşımı tercih edilir.
Örnek (dosya yaklaşımı):
/etc/sysctl.d/99-swap.conf
İçerik örneği:
vm.swappiness=10
Ardından:
- sysctl --system
Burada hedef agresif swap kullanımını azaltmaktır. Ancak değer düşürmek, bazı uç durumlarda memory basıncını RAM üzerinde daha belirgin hale getirebilir. Bu yüzden önce ölçüm yapın.
4) cgroup/container ortamında swap politikası
Container kullanan sistemlerde swap davranışı, cgroup ayarlarına göre farklılaşabilir. Eğer Docker/Kubernetes kullanıyorsanız swap’i sadece host seviyesinde ayarlamak her zaman aynı sonucu üretmez.
Bu tip yapılarda şu kontrolleri yapın: - container limitleri (memory limit) - swap enable politikaları - OOM kill logları
Performansı korumak için “swap ile birlikte” bakılacak 5 metrik
Swap tek başına sorunu açıklamaz. Performans düşüşünün swap kaynaklı mı yoksa başka bir darboğaz mı olduğunu netleştirmek için aşağıdaki metrikleri birlikte değerlendirin.
- Disk latency:
await(iostat) - Swap aktifliği:
si/so(vmstat) - Memory basıncı:
free -h+ swap used - CPU steal (steal time): sanal ortamda performans paylaşımları (varsa)
- Uygulama gecikmesi: web/queue iş süreleri
Pratik yorum kılavuzu
- Disk latency yüksek + swap kullanımı yüksek + istek gecikmesi artıyorsa: swap thrashing olasılığı çok yüksektir.
- Swap kullanımı var ama disk latency düşük ve istek gecikmesi sabitse: swap daha çok koruma rolündedir.
- Disk latency düşük, swap kullanımı yüksek ama istek gecikmesi sınırlıysa: kök neden farklı olabilir (ör. CPU bound, lock/IO wait dışı).
Sık yapılan hatalar ve doğru düzeltme sırası
Aşağıdaki hatalar, swap ayarlarında en sık görülen performans sorunlarıdır.
Hata 1: Swap’ı sınırsız büyütmek
Sonuç: Disk I/O kuyruğu artar, gecikme yükselir.
Doğru sıra: - Önce uygulama bellek ayarlarını ve concurrency’i düzelt - Sonra gerekirse RAM artır - Swap’i “OOM emniyeti” olarak tut
Hata 2: swappiness’i tek hamlede aşırı düşürmek
Sonuç: Sistem RAM’de daha agresif sıkışabilir; bazı yüklerde OOM riski artabilir.
Doğru sıra: - vmstat ve iostat ile kademeli ölçüm - OOM logları ve uygulama error rate’i kontrol - Değeri test ederek optimize et
Hata 3: Disk türünü göz ardı etmek
SSD yerine yavaş disklerde swap daha pahalıdır. VDS/VPS’te sağlayıcıdan gelen disk performansı (IOPS/throughput) swap’in etkisini doğrudan belirler.
Doğru sıra: - Sağlayıcının depolama tipini ve IOPS limitlerini gözden geçirin - swap kullanımında iostat ile doğrulayın
Test planı: Ayarı değiştirdikten sonra nasıl doğrularsınız?
Swap ayarlarını değiştirdikten sonra “tek ölçüm” yeterli değildir. En az 30-60 dakikalık gözlem yapın (mümkünse trafik piki içeren zaman aralığı).
Test sırasında izlemeniz gerekenler
vmstat 2ilesi/sodavranışıiostat -x 2ileawaitveutilfree -hile swap used değişimi- Uygulama metrikleri: response time, error rate
Kabul kriteri örnekleri
- Swap used kısa süreli yükselip sonra hızlı düşüyorsa: iyileşme işareti
awaitveutilsürekli yükseliyorsa: swap diski boğuyor- OOM kill yok, ama yine de gecikme artıyorsa: farklı darboğaz arayın
NetKıyas bakış açısıyla karar: Swap ayarı hangi seçeneklerle birlikte ele alınmalı?
Swap, sunucu mimarisinden bağımsız değildir. Aynı VDS planında: - Daha yüksek RAM, swap kullanma ihtiyacını azaltır - Daha iyi depolama (IOPS/latency), swap’in performans etkisini düşürür - CPU/worker kapasitesi, bellek basıncını dolaylı olarak etkiler
Bu nedenle swap ayarı tek başına “çözüm planı” değildir. Uygulama profiline göre RAM ve disk performansı birlikte optimize edilmelidir.
Sonuç: Aksiyon önerisi
Swap ayarlarını değiştirmeden önce free -h, vmstat ve iostat ile mevcut davranışı ölçün; thrashing sinyali varsa swap’i büyütmek yerine bellek kök nedenini giderin. Eğer sistem swap’i hiç kullanmıyorsa küçük bir koruma swap ile ilerleyin; swap kısa piklerde devreye giriyorsa kontrollü bir swappiness ayarıyla davranışı sınırlayın. Her durumda, değişiklik sonrası 30-60 dakika boyunca si/so ve disk latency’yi birlikte izleyin; hedefiniz disk I/O’yu kalıcı biçimde darboğaza sokmadan OOM riskini minimumda tutmaktır.
Hosting karşılaştırması yapmaya hazır mısın?
100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.
Hosting Karşılaştır →İlgili Yazılar
WordPress Staging: Hosting’de demo siteyi doğru kurma
WordPress staging (demo) siteyi hosting üzerinde nasıl oluşturacağınızı adım adım öğrenin: kopyalama, domain, test, yedek ve yayın.
Kurumsal Site Hosting: Güvenlik Kriterleri ve Net Kontrol Listesi
Kurumsal site için hosting güvenlik kriterlerini; WAF, DDoS, yedekleme, yama, erişim kontrolü ve loglama üzerinden net kontrol listesiyle inceleyin.
Çoklu WordPress (Multisite) için doğru hosting seçimi
Çoklu WordPress (multisite) için VDS/VPS, disk, RAM, cache ve yedekleme gereksinimlerini net örneklerle karşılaştırın.
Bulut sunucuda saatlik fiyat: Gerçek maliyeti nasıl hesaplanır
Saatlik fiyat sadece başlangıçtır. Bulut sunucuda CPU/RAM, depolama, egress ve yedekleme maliyetlerini adım adım hesaplayın.
