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ı artıyorsa önce swap’ı kapatmak yerine hangi sürecin belleği tükettiğini ve sistemin gerçekten bellek baskısı altında olup olmadığını ölçün. Ardından gereksiz süreçleri veya bellek sızıntısını düzeltin, gerekiyorsa RAM’i artırın ve vm.swappiness değerini iş yüküne uygun biçimde ayarlayın. Swap etkinliğini azaltmak mümkün olsa da swap alanını tamamen devre dışı bırakmak, fiziksel bellek tükendiğinde sistemi daha hızlı değil daha kırılgan hâle getirebilir.

Önce swap kullanımının neden arttığını ölçün​


Swap, RAM’de yeterince yer kalmadığında Linux’un daha az kullanılan bellek sayfalarını disk üzerindeki ayrılmış alana taşımasıdır. Swap alanının dolu görünmesi tek başına performans sorunu anlamına gelmez; önemli olan sistemin sürekli olarak RAM ile disk arasında veri taşıyıp taşımadığıdır. Bu taşıma işlemi yoğunlaşıyorsa gecikme artar ve disk kullanımı yükselir.

İlk olarak genel bellek durumunu ve swap’ın ne kadar kullanıldığını kontrol edin:

Bash:
free -h
swapon --show

free -h çıktısında özellikle available belleğe bakın. available değeri hâlâ yüksekse, swap’ın daha önce kullanılmış olması sistemin şu anda mutlaka bellek sıkıntısı yaşadığını kanıtlamaz. Linux, swap’a taşınmış sayfaları ihtiyaç duyulana kadar orada tutabilir.

Swap hareketliliğini görmek için vmstat kullanın:

Bash:
vmstat 1 10

Çıktıdaki si ve so sütunları önemlidir. si, swap’tan RAM’e okunan; so ise RAM’den swap’a yazılan veri miktarını gösterir. Değerler sürekli olarak sıfırdan büyükse sistem aktif biçimde swap kullanıyor olabilir. Ara sıra görülen kısa süreli hareket, tek başına kalıcı bir performans sorunu değildir.

Süreçlerin bellek kullanımını sıralamak için şu komutu çalıştırabilirsiniz:

Bash:
ps -eo pid,ppid,user,%mem,rss,cmd --sort=-%mem | head -n 20

Burada %MEM fiziksel RAM kullanımını, RSS ise sürecin RAM’de tuttuğu yaklaşık miktarı gösterir. Listenin üstündeki sürecin gerçekten gereksiz olduğunu varsaymayın. Veritabanı, PHP-FPM, Java veya önbellek servisleri yüksek bellek kullanabilir; doğru işlem, servisi kapatmak değil, yapılandırmasını ve iş yükünü incelemektir.

Bellek tüketen nedeni düzeltin​


Swap kullanımı belirli bir servisin yoğunlaşmasından sonra artıyorsa önce o servisin bellek sınırlarını ve çalışma modelini kontrol edin. Örneğin PHP-FPM’de fazla sayıda eşzamanlı çalışan süreç, veritabanında yüksek bağlantı sayısı veya kontrolsüz bir uygulama önbelleği RAM’i tüketebilir. Aynı şekilde, uzun süre çalışan bir süreçte bellek sızıntısı varsa swap ayarı sorunu yalnızca geciktirir.

İzlenecek sıra şu şekilde olmalıdır:
  1. Swap artışının başladığı zamanı belirleyin ve aynı zaman aralığında servis günlüklerini, işlem sayısını ve RAM kullanımını karşılaştırın.
  2. En fazla bellek kullanan servisin yapılandırmasında çalışan süreç, bağlantı, önbellek veya iş kuyruğu sınırlarını inceleyin.
  3. Gereksiz servisleri kapatmadan önce hangi uygulamanın veya hizmetin onlara bağlı olduğunu kontrol edin.
  4. Yapılandırma değişikliğinden sonra servisi kontrollü biçimde yeniden başlatın ve free -h ile vmstat 1 çıktısını yeniden izleyin.
Değişiklikten sonra RAM kullanımı düşüyor ve vmstat içinde si/so değerleri sürekli hareket etmiyorsa neden büyük olasılıkla servis yükü veya yapılandırmasıdır. Swap doluluğu yüksek kalıyor ancak aktif taşıma yoksa bu durum eski swap sayfalarının beklemede tutulmasından kaynaklanabilir; doğrudan performans kaybı kanıtı değildir.

değerini kontrollü ayarlayın​


vm.swappiness, çekirdeğin swap kullanma eğilimini etkileyen bir ayardır. Değeri düşürmek swap kullanımını azaltabilir; ancak bu ayar RAM miktarını artırmaz ve bellek tüketen süreci düzeltmez. Çok düşük bir değer, RAM tamamen dolduğunda ani bellek baskısını artırabilir.

Mevcut değeri görün:

Bash:
sysctl vm.swappiness

Geçici bir deneme için örneğin 10 değerini uygulayabilirsiniz:

Bash:
sudo sysctl vm.swappiness=10

Ardından birkaç dakika boyunca free -h, vmstat 1 ve disk gecikmesini izleyin. Swap hareketi azalıyor, uygulama gecikmesi artmıyor ve RAM kullanımı kritik düzeye çıkmıyorsa bu değer iş yükünüz için uygun olabilir. Ancak yalnızca swap’ın doluluk yüzdesine bakarak karar vermeyin; si ve so hareketliliği ile uygulamanın yanıt süresini birlikte değerlendirin.

Değerin yeniden başlatmadan sonra da korunmasını istiyorsanız, dağıtımınızın sysctl yapılandırma dosyasına şu satırı ekleyin:

Kod:
vm.swappiness=10

Dosyayı kaydettikten sonra ayarı yeniden yükleyin:

Bash:
sudo sysctl --system

Dağıtımın yapılandırma dosyalarının konumu değişebileceği için mevcut sysctl yapılandırma düzeninizi kullanın; aynı ayarı birden fazla dosyaya farklı değerlerle yazmayın. Son geçerli değeri tekrar sysctl vm.swappiness ile doğrulayın.

Swap alanını temizlemek ne zaman güvenlidir?​


Swap alanını boşaltmak, swap kullanımının nedenini çözmez. RAM’de yeterli boş alan olduğundan emin olmadan swap’ı kapatıp açmak, mevcut bellek baskısını artırabilir. Yalnızca aktif swap hareketi yoksa, yeterli available RAM varsa ve kısa süreli bir bakım penceresi planladıysanız kullanılabilir.

Örneğin tek bir swap alanını yeniden etkinleştirmek için genel sıra şöyledir:

Bash:
free -h
vmstat 1 5
sudo swapoff /dev/XXX
sudo swapon /dev/XXX
swapon --show
free -h

/dev/XXX yerine swapon --show çıktısında görünen gerçek swap aygıtını veya dosyasını yazın. swapoff komutu başarısız olursa sistemde swap sayfalarını RAM’e alacak kadar boş bellek olmayabilir; işlemi zorlamayın. Önce bellek kullanan servisi azaltın veya RAM kapasitesini artırın.

Aşağıdaki ayrım karar vermeyi kolaylaştırır:
GözlemAnlamıSonraki işlem
Swap dolu, si/so çoğunlukla sıfırEski swap sayfaları bekliyor olabilir; aktif baskı kanıtı değildir.available RAM ve uygulama gecikmesini izleyin; yalnız temizlik için swapoff yapmayın.
si/so sürekli yükseliyorRAM ile disk arasında aktif taşıma vardır; bellek baskısı olasıdır.En fazla bellek kullanan süreci inceleyin, yükü azaltın veya RAM ekleyin.
available RAM çok düşük, disk bekleme süresi yüksekSwap işlemleri uygulama gecikmesine dönüşüyor olabilir.Acil yükü azaltın; kalıcı çözüm olarak servis sınırlarını düzeltin veya RAM’i artırın.
Swap az kullanılıyor fakat uygulama yavaşSorun swap olmayabilir; CPU, disk, ağ veya uygulama kilitlenmesi de incelenmelidir.CPU, disk gecikmesi, I/O beklemesi ve uygulama günlüklerini ayrıca ölçün.

Kalıcı çözüm: yük ile RAM kapasitesini eşleştirin​


Swap kullanımı, sunucunun sürekli çalışma yükünde tekrarlanıyorsa yalnızca vm.swappiness değerini düşürmek kalıcı çözüm değildir. Aynı anda çalışan servislerin bellek üst sınırlarını belirleyin, gereksiz süreçleri kaldırın, uygulama veya veritabanı önbelleğini toplam RAM’e göre ayarlayın ve ani trafik artışlarını ayrıca izleyin.

Sunucu düzenli olarak aktif swap yapıyor, servis yapılandırmaları makul sınırlar içinde kalıyor ve yük azaltılamıyorsa RAM artırımı en doğrudan çözümdür. Swap, RAM’in yerine geçen hızlı bir bellek değildir; fiziksel bellek yetersizliğinde sistemi tamamen durdurmak yerine bir güvenlik payı sağlar, fakat yoğun kullanımda disk gecikmesini 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