Tiesto

WFN Üye
Konular
635
Mesajlar
635
Çözüm
0
Ticaret Puanı
0
Üyelik
24 Gün
Konum
Antalya
Web Sitesi
Var
Alanı
Domain Uzmanı
1/1
Konu sahibi
Swap kullanımı, RAM’in tamamen dolduğu anlamına gelmez; Linux, RAM’i daha verimli kullanmak veya bellek baskısını azaltmak için uzun süredir erişilmeyen bellek sayfalarını swap alanına taşıyabilir. Önce free -h, swapon --show ve vmstat 1 çıktılarıyla gerçek bellek baskısını ayırın. RAM’de yeterli boşluk varsa swap’ı güvenli biçimde azaltmak için swapoff ile sayfaları RAM’e geri alıp yeniden swapon etkinleştirebilirsiniz; ancak RAM yetersizse bu işlem başarısız olabilir veya çalışan servisleri riske atabilir.

Önce swap kullanımının neden arttığını belirleyin​


Aşağıdaki komutlar farklı bilgileri gösterir:

Bash:
free -h
swapon --show
vmstat 1 5

free -h çıktısında özellikle available RAM değerine bakın. used değerinin yüksek olması tek başına sorun değildir; Linux dosya önbelleğini de RAM’de tutar. available düşükse ve swap doluluğu artıyorsa sunucuda gerçek bellek baskısı olabilir.

swapon --show, kullanılan swap alanının dosya mı yoksa bölüm mü olduğunu ve ne kadarının dolu bulunduğunu gösterir. vmstat 1 5 çıktısında si ve so sütunları önemlidir. si RAM’e swap’tan okunan, so ise RAM’den swap’a yazılan miktarı gösterir. Bu değerler sürekli yüksekse sistem etkin biçimde swap yapıyor demektir. Değerler çoğunlukla sıfır, fakat swap kullanımı yüksekse sayfalar daha önce swap’a taşınmış ve şu anda aktif olarak geri dönmüyor olabilir.

Swap artışının yaygın nedenleri şunlardır:
  • Çalışan servislerin toplam bellek ihtiyacının RAM kapasitesini aşması.
  • Veritabanı, PHP-FPM, Java veya benzeri süreçlerin zamanla bellek tüketimini artırması.
  • Linux’un uzun süredir kullanılmayan bellek sayfalarını swap’a taşıması.
  • Konteyner ya da servis başına tanımlanan bellek sınırlarının düşük olması.
  • Ani trafik, yedekleme, derleme veya yoğun sorgu sırasında oluşan geçici bellek baskısı.
Süreçleri bellek kullanımına göre görmek için şu komutu çalıştırabilirsiniz:

Bash:
ps -eo pid,ppid,comm,%mem,rss --sort=-rss | head -n 15

Buradaki RSS değeri sürecin RAM’de tuttuğu fiziksel bellek miktarını yaklaşık olarak gösterir. Bu liste, swap kullanımının hangi sürecin swap’a taşındığını kesin olarak kanıtlamaz; ancak bellek tüketen servisleri incelemek için başlangıç noktasıdır.

Sonucu ayırarak yorumlayın​

GözlemAnlamıİzlenecek yol
available düşük, si/so sürekli yüksekAktif bellek baskısı varBellek tüketen servisi, trafik artışını ve limitleri inceleyin; gerekirse RAM artırın veya servis yükünü azaltın
available yeterli, si/so çoğunlukla sıfırSwap’ta eski ve şu anda pasif sayfalar kalmış olabilirRAM yeterliyse swap’ı kontrollü biçimde RAM’e geri taşıyın
Swap sürekli doluyor ve servisler yavaşlıyorSistem RAM kapasitesine dayanamıyor olabilirSüreç bellek kullanımını ve OOM kayıtlarını inceleyin; yalnız swappiness değerini düşürmek kalıcı çözüm değildir
Swap kullanımı yüksek görünse bile hemen swap’ı kapatmayın. Swap, RAM taşması sırasında süreçlerin sonlandırılmasını geciktirebilir; fakat yoğun swap etkinliği disk beklemelerine ve ciddi yavaşlamaya yol açar. Sorun RAM yetersizliğiyse swap’ı temizlemek yalnızca geçici rahatlama sağlar.

Swap alanını güvenli biçimde azaltma​


Bu işlemi yoğun saat dışında yapın ve önce free -h çıktısındaki available RAM’in, kullanılan swap miktarını karşılayabilecek düzeyde olduğundan emin olun. Yeterli RAM yoksa işlemi zorlamayın; önce bellek tüketen servisi durdurun, yükü azaltın veya RAM kapasitesini artırın.
  1. Kullanılan swap alanının yolunu öğrenin: swapon --show.
  2. RAM ve swap durumunu kaydedin: free -h.
  3. Yeterli RAM varsa ilgili alanı kapatın. Tüm swap alanları için swapoff -a, belirli bir dosya veya bölüm için swapoff /swapfile kullanılır.
  4. İşlem tamamlanınca free -h ve swapon --show ile kontrol edin. Swap kullanımı sıfıra yaklaşmalı ve RAM kullanımı artmalıdır.
  5. Swap’ı yeniden etkinleştirin: swapon -a veya ilgili alan için swapon /swapfile.
  6. Son durumu tekrar free -h ve vmstat 1 5 ile izleyin.
swapoff komutu “Cannot allocate memory” benzeri bir hatayla başarısız olursa RAM, swap’taki sayfaların tamamını karşılamıyor demektir. Bu durumda swap’ı tekrar tekrar kapatmayı denemeyin; önce büyük bellek kullanan süreci belirleyip yükü azaltın. İşlem sırasında servis kesintisi veya süreç sonlandırılması olduysa sistem günlüklerinde ilgili servis ve bellek kayıtlarını inceleyin.

Swappiness değerini ne zaman düşürmeli?​


vm.swappiness, çekirdeğin swap kullanma eğilimini etkiler; swap’ta bulunan mevcut sayfaları kendiliğinden RAM’e taşımaz. Mevcut değeri görmek için:

Bash:
sysctl vm.swappiness

Geçici bir ayar için, örneğin varsayımsal olarak 10 değeri şöyle uygulanabilir:

Bash:
sudo sysctl -w vm.swappiness=10

Bu değişiklik yalnızca swap’a daha erken başvurmayı azaltabilir. Aktif bellek ihtiyacı RAM’i aşıyorsa düşük bir değer sorunu çözmez; sistem yine swap kullanabilir veya bellek yetersizliği yaşayabilir. Kalıcı ayar yapılacaksa dağıtımınızın sysctl yapılandırmasına eklenen değerin yeniden başlatma sonrasında da doğrulanması gerekir. Değeri düşürmeden önce si/so hareketini ve servislerin bellek ihtiyacını ölçün; yalnızca swap kullanım yüzdesine bakarak karar vermeyin.

Swap kullanımı RAM boşken artmış, si/so düşük ve servis performansı normalse bu durum tek başına arıza değildir. Buna karşılık si/so sürekli yüksek, disk beklemesi artmış veya servisler yavaşlamışsa önce bellek tüketimini azaltın ya da RAM’i artırın; swap’ı temizlemek bu temel nedeni ortadan kaldırmaz.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic