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
İlk bakış için SSH ile sunucuya bağlanıp free -h komutunu çalıştırın; ardından bellek kullanımının hangi süreçlerden kaynaklandığını görmek için top veya ps aux --sort=-%mem kullanın. free çıktısındaki available değeri düşükse sistem belleği gerçekten sınırlanıyor olabilir; yalnızca used değerinin yüksek olması tek başına sorun anlamına gelmez. Sonucu süreç listesi, takas alanı ve gerekiyorsa geçmiş ölçümlerle birlikte değerlendirerek hangi uygulamanın inceleneceğine karar verin.

Bellek kullanımını anlık olarak görme​


SSH oturumunda aşağıdaki komutu çalıştırın:

Bash:
free -h

Çıktıdaki Mem satırında toplam bellek, kullanılan bellek, boş bellek, önbellek ve kullanılabilir bellek gösterilir. Swap satırı ise RAM yetmediğinde kullanılan takas alanının durumunu gösterir.

Örnek olarak available değeri 3,2 GiB olan bir sunucuda uygulamaların kullanabileceği yaklaşık bellek hâlâ 3,2 GiB düzeyindedir. free değerinin düşük olması tek başına alarm değildir; Linux, boş RAM’i dosya önbelleği olarak kullanabilir ve gerektiğinde bu alanı uygulamalara bırakabilir.

Belleği belirli aralıklarla izlemek için:

Bash:
watch -n 2 free -h

Bu komut free -h çıktısını iki saniyede bir yeniler. Çıkmak için Ctrl+C tuşlarına basın. available değeri sürekli düşüyor, swap kullanımı artıyor ve sistem yanıtları yavaşlıyorsa sorun anlık bir dalgalanmadan çok sürekli bellek baskısı olabilir.

Belleği hangi süreçlerin kullandığını bulma​


Anlık süreç sıralaması için:

Bash:
ps aux --sort=-%mem | head -n 15

Bu listede %MEM sütunu, sürecin toplam fiziksel belleğe oranını gösterir. RSS değeri ise sürecin RAM’de tuttuğu yaklaşık fiziksel bellek miktarını kilobayt cinsinden verir. Listenin ilk sırasında bir web sunucusu, veritabanı, PHP-FPM işçisi veya başka bir servis bulunabilir.

Daha etkileşimli inceleme için:

Bash:
top

top açıldığında bellek kullanımını sıralamak için genellikle M tuşuna basabilirsiniz. Ekranın üst kısmındaki toplam bellek, boş bellek, önbellek ve swap bilgilerini; süreç bölümündeki %MEM ve RES sütunlarını birlikte inceleyin. Çıkmak için q tuşunu kullanın.

Yüklüyse daha ayrıntılı bir görünüm için htop da kullanılabilir:

Bash:
htop

Bir sürecin yüksek bellek kullanması, tek başına bellek sızıntısını kanıtlamaz. Örneğin veritabanı önbelleği veya uygulamanın normal çalışma alanı zaman içinde büyüyebilir. Aynı süreci belirli aralıklarla izleyin; kullanım sürekli yükseliyor ve yeniden başlatma dışında düşmüyorsa uygulama yapılandırması, sürüm, istek trafiği ve süreç başına ayrılan sınırlar incelenmelidir.

Aşağıdaki komut, belirli bir işlemin PID değerini ve bellek kullanımını görmenizi sağlar:

Bash:
ps -p PID -o pid,ppid,cmd,%mem,rss,vsz

Buradaki PID yerine gerçek işlem kimliğini yazın. RSS RAM’deki fiziksel kullanımın, VSZ ise sürecin ayırdığı sanal adres alanının yaklaşık göstergesidir. VSZ değerinin yüksek olması doğrudan aynı miktarda RAM tüketildiği anlamına gelmez; RAM baskısını yorumlarken öncelikle RSS, sistemdeki available ve swap durumu dikkate alınmalıdır.

Çıktıyı birlikte yorumlama​


Bellek durumunu tek bir sütuna bakarak değerlendirmeyin. Aşağıdaki ayrım hangi adımın uygun olduğunu gösterir:
Görülen durumAnlamıSonraki adım
Used yüksek, available yeterliLinux önbellek kullanıyor olabilir; tek başına sorun kanıtı değildir.Süreç listesini ve uygulama yanıt sürelerini izleyin.
Available sürekli düşükUygulamaların kullanabileceği RAM azalmış olabilir.En çok RSS kullanan süreçleri bulun ve yapılandırmalarını inceleyin.
Swap kullanımı artıyorRAM baskısı veya daha önce yaşanmış bellek baskısı olabilir.Swap hareketini ve sistem yavaşlığını vmstat ile kontrol edin.
Bir süreç sürekli büyüyorYük artışı, önbellek davranışı veya olası bellek sızıntısı olabilir.PID, RSS ve zaman bilgisini düzenli kaydedip uygulama günlükleriyle karşılaştırın.
Swap alanının etkin ve ne kadar kullanıldığını ayrıca görmek için:

Bash:
swapon --show

RAM ve swap hareketini kısa aralıklarla izlemek için:

Bash:
vmstat 2 5

Bu komut iki saniye arayla beş ölçüm alır. si ve so sütunlarında sürekli giriş-çıkış görülmesi, belleğin swap ile taşındığını gösterir. Bu durum yüksek RAM baskısına işaret edebilir; ancak yalnızca swap’ın dolu olması her zaman aktif bir problem olduğu anlamına gelmez. Asıl belirti, swap hareketine eşlik eden yavaşlama, yüksek bekleme süreleri veya uygulama hatalarıdır.

Ölçümü kaydedip artışı doğrulama​


Sorun yalnızca belirli saatlerde oluşuyorsa tek bir free -h çıktısı yeterli olmaz. Örneğin varsayımsal olarak aşağıdaki komutla temel bellek değerlerini zaman damgasıyla kaydedebilirsiniz:

Bash:
while true; do date; free -h; echo; sleep 60; done | tee -a memory.log

Bu komut her 60 saniyede bir tarihi ve bellek durumunu memory.log dosyasına ekler. İşlem bitince Ctrl+C ile durdurun. Dosyada available değerinin zamana göre düşüp düşmediğini ve swap kullanımının artıp artmadığını karşılaştırın.

Tanılama tamamlandığında log dosyası hassas süreç veya sistem bilgileri içeriyorsa erişimini sınırlandırın ya da artık gerekmiyorsa silin. Dosyayı paylaşmanız gerekiyorsa kullanıcı adları, işlem komut satırları, IP adresleri, ortam değişkenleri ve uygulama sırlarını ayıklayın.

Bulgudan sonra ne yapılmalı?​


En çok bellek kullanan süreç bir uygulamaya aitse önce o uygulamanın kendi metriklerini ve günlüklerini kontrol edin. Web sunucularında çalışan PHP-FPM işçi sayısı, veritabanlarında önbellek ve bağlantı ayarları, Java veya Node.js uygulamalarında ise süreç başına ayrılan bellek sınırları toplam tüketimi etkileyebilir. Değişiklik yapmadan önce mevcut ayarları kaydedin ve mümkünse kontrollü bir bakım aralığı belirleyin.

Bir servis beklenmedik şekilde büyüyorsa yalnızca servisi yeniden başlatmak geçici rahatlama sağlayabilir; kök nedeni kanıtlamaz. Yeniden başlatmadan önce ve sonra free -h, ps veya top çıktısını; PID, saat, RSS, swap durumu ve ilgili uygulama günlükleriyle birlikte kaydedin. Böylece sorunun belirli bir istek, görev, sürüm veya yapılandırma sonrasında tekrarlanıp tekrarlanmadığını karşılaştırabilirsiniz.

Sunucuda bellek yetersizliği nedeniyle süreçler sonlandırılmışsa kernel günlüklerinde OOM belirtilerini arayın:

Bash:
dmesg -T | grep -i -E 'out of memory|oom|killed process'

Bazı sistemlerde bu komut için yönetici yetkisi gerekebilir. OOM kaydı bulunması, çekirdeğin bellek baskısı sırasında bir süreci sonlandırdığını gösterir; hangi uygulamanın neden aşırı bellek kullandığını tek başına açıklamaz. Kaydı, olay saatindeki süreç ölçümleri ve uygulama günlükleriyle birlikte değerlendirin.

Bu ölçümler sonucunda available sürekli düşük, swap hareketi sürekli yüksek ve en büyük süreçlerin normal çalışma sınırlarını aştığı görülüyorsa seçenekler; uygulama ayarlarını düzeltmek, gereksiz servisleri azaltmak, iş yükünü bölmek veya RAM kapasitesini artırmaktır. Sadece önbelleği temizlemek ya da swap eklemek, gerçek bellek ihtiyacını ortadan kaldırmaz; bunlar ancak ölçüm sonucuna göre geçici veya tamamlayıcı çözümler olarak değerlendirilmelidir.
 

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