Linux Sunucuda RAM Kullanımı Nasıl Kontrol Edilir? Bellek Kullanımı Rehberi
Linux sunucuda RAM kullanımını kontrol etmenin en kolay yollarından biri free -h komutudur. Bu komut toplam RAM miktarını, kullanılan belleği, kullanılabilir belleği ve swap durumunu okunabilir biçimde gösterir.
SSH ile sunucuya bağlandıktan sonra:
free -hkomutunu çalıştırabilirsiniz.
Ancak Linux'ta RAM kullanımını değerlendirirken yalnızca
used değerine bakmak yanıltıcı olabilir. Linux boş belleğin bir kısmını cache amacıyla kullanır ve ihtiyaç olduğunda bu belleğin önemli bir bölümü uygulamalara yeniden ayrılabilir. Bu nedenle özellikle available değerine dikkat etmek gerekir.free -h çıktısı nasıl okunur?
Örneğin buna benzer bir çıktı görebilirsiniz:
total used free shared buff/cache availableMem: 8Gi 3Gi 500Mi 200Mi 4Gi 4GiSwap: 2Gi 100Mi 1.9GiBuradaki temel alanlar:
total: Sunucudaki toplam RAM.
used: Kullanılan bellek.
free: Tamamen boş durumda olan bellek.
buff/cache: Linux tarafından buffer ve filesystem cache gibi amaçlarla kullanılan bellek.
available: Yeni uygulamaların yoğun swap ihtiyacı oluşturmadan kullanabileceği tahmini bellek miktarı.
Sunucunun gerçek bellek baskısını değerlendirirken
available değeri genellikle free değerinden daha anlamlıdır.RAM neden neredeyse tamamen dolu görünebilir?
Linux kullanılmayan RAM'i tamamen boş bırakmak yerine disk erişimini hızlandırmak amacıyla cache için kullanabilir.
Bu nedenle örneğin:
free: 300 MBgörmeniz tek başına RAM'in bittiği anlamına gelmez.
Eğer:
available: 4 GBgibi bir değer bulunuyorsa sistemin hâlâ önemli miktarda kullanılabilir belleği olabilir.
Bu yüzden yalnızca
free sütununa bakarak sunucuda RAM problemi olduğuna karar vermeyin.Anlık RAM kullanımı nasıl izlenir?
topkomutu sistem kaynaklarını gerçek zamanlı olarak görüntüleyebilir.
Çalıştırmak için:
topkullanın.
Burada:
- CPU kullanımı
- Bellek kullanımı
- Process'ler
- Load average
- Çalışma süresi
gibi birçok bilgi görülebilir.
top içerisindeki process listesinden hangi uygulamaların daha fazla kaynak tükettiğini inceleyebilirsiniz.htop nedir?
htop, top komutuna alternatif olarak kullanılan daha görsel bir sistem izleme aracıdır.Kuruluysa:
htopkomutuyla çalıştırılabilir.
Ubuntu veya Debian tabanlı bir sistemde kurulu değilse:
sudo apt updatesudo apt install htopile kurulabilir.
htop üzerinden:- RAM
- CPU
- Swap
- Process'ler
- Process ID
- Kullanıcılar
daha rahat incelenebilir.
En fazla RAM kullanan process'ler nasıl bulunur?
Bellek kullanımına göre process'leri listelemek için:
ps aux --sort=-%mem | headkullanabilirsiniz.
Bu komut yüksek bellek yüzdesine sahip process'leri üst sıralarda gösterir.
Daha ayrıntılı inceleme için:
ps aux --sort=-rss | headda kullanılabilir.
RSS, process'in fiziksel bellekte tuttuğu alan hakkında bilgi verir.
Node.js uygulamasının RAM kullanımı nasıl kontrol edilir?
PM2 kullanıyorsanız:
pm2 statusveya:
pm2 listkomutları uygulamaların bellek kullanımını gösterebilir.
Belirli bir uygulamanın ayrıntıları için:
pm2 describe uygulama-adikullanabilirsiniz.
Bir Node.js uygulamasının RAM kullanımı sürekli yükseliyorsa:
- Memory leak
- Kontrolsüz cache
- Çok büyük veri işlemleri
- Gereksiz process sayısı
- Yoğun trafik
- Büyük dosya işlemleri
gibi nedenler araştırılabilir.
PM2 uygulaması sürekli RAM tüketiyorsa ne yapılmalı?
Öncelikle uygulamanın kullanımını belirli bir süre takip edin.
RAM sürekli:
200 MB → 400 MB → 800 MB → 1.5 GBşeklinde yükseliyor ve normal seviyeye dönmüyorsa memory leak ihtimali araştırılabilir.
Ancak yalnızca RAM miktarının yüksek olması memory leak bulunduğunu kanıtlamaz.
Uygulamanın iş yükü ve Node.js bellek davranışı da dikkate alınmalıdır.
PM2 restart ile RAM geçici olarak düşebilir ancak problem kod kaynaklıysa tekrar yükselecektir.
Bu nedenle yalnızca restart yapmak kalıcı çözüm değildir.
PostgreSQL RAM kullanır mı?
Evet.
PostgreSQL performans için RAM kullanır ve birden fazla bağlantı/process görülebilir.
Bu nedenle process listesinde PostgreSQL ile ilgili birden fazla kayıt görmek tek başına problem anlamına gelmez.
Veritabanının bellek kullanımını değerlendirirken:
- Aktif bağlantılar
- PostgreSQL yapılandırması
- Sorgular
- Sunucunun toplam RAM'i
- Diğer servislerin kullanımı
birlikte değerlendirilmelidir.
PostgreSQL process'lerini rastgele sonlandırmak veri veya servis problemlerine neden olabilir.
Nginx ne kadar RAM kullanır?
Nginx genellikle bir master process ve bir veya daha fazla worker process ile çalışır.
Kontrol etmek için:
ps aux | grep nginxkullanabilirsiniz.
Birden fazla Nginx process'i görülmesi normal olabilir.
RAM problemi araştırırken yalnızca process sayısına değil toplam kaynak tüketimine bakmak gerekir.
Swap nedir?
Swap, fiziksel RAM baskısı oluştuğunda kullanılabilen disk tabanlı bellek alanıdır.
free -hçıktısında:
Swapsatırını görebilirsiniz.
Örneğin:
Swap: 2.0Gi 500Mi 1.5Gisistemde 2 GB swap bulunduğunu ve bunun 500 MB'ının kullanıldığını gösterir.
Swap kullanılması kötü müdür?
Swap kullanımının bulunması tek başına problem anlamına gelmez.
Ancak sistem sürekli yoğun şekilde swap kullanıyorsa fiziksel RAM baskısı yaşanıyor olabilir.
Disk erişimi RAM'den çok daha yavaş olduğundan yoğun swap kullanımı performansı ciddi şekilde etkileyebilir.
Bu durumda:
- RAM ihtiyacı
- Uygulama kullanımı
- Veritabanı ayarları
- Gereksiz servisler
- Memory leak ihtimali
araştırılmalıdır.
Swap yoksa ne olur?
Swap bulunmayan ve RAM'i tamamen tüketilen sistemlerde kernel bazı process'leri sonlandırmak zorunda kalabilir.
Linux'un OOM Killer mekanizması bellek yetersizliği durumunda process sonlandırabilir.
Bu nedenle küçük RAM'e sahip VPS'lerde uygun bir swap yapılandırması bazı senaryolarda ek güvenlik payı sağlayabilir.
Ancak swap, yetersiz RAM'in kalıcı çözümü değildir.
OOM Killer nedir?
OOM, "Out Of Memory" anlamına gelir.
Linux kullanılabilir belleğin kritik seviyede tükenmesi durumunda sistemi çalışır halde tutabilmek için bazı process'leri sonlandırabilir.
Böyle bir olaydan şüpheleniyorsanız sistem logları incelenebilir.
Örneğin:
journalctl -kile kernel kayıtları görüntülenebilir.
OOM ile ilgili kayıtları filtrelemek için:
journalctl -k | grep -i -E 'out of memory|oom|killed process'kullanılabilir.
Dağıtıma ve log yapılandırmasına göre kayıtların konumu değişebilir.
Node.js uygulaması OOM nedeniyle kapanırsa ne olur?
Node.js uygulaması bellek nedeniyle sonlandırılırsa PM2 tekrar başlatabilir.
Kullanıcı tarafında bu durum:
- 502 Bad Gateway
- Geçici erişim problemi
- Uygulamanın sürekli restart olması
şeklinde görülebilir.
Bu durumda:
pm2 statusüzerindeki restart sayısını ve:
pm2 logsçıktısını kontrol etmek faydalıdır.
Ayrıca kernel loglarında OOM kaydı araştırılmalıdır.
RAM kullanımını yüzde olarak nasıl görebilirim?
top veya htop bunun için oldukça kullanışlıdır.Process bazında:
ps aux --sort=-%mem | headkomutuyla yüksek RAM kullanan uygulamaları hızlıca görebilirsiniz.
Sunucunun genel bellek durumu için ise:
free -hen pratik başlangıç noktalarından biridir.
Cache belleğini manuel temizlemek gerekir mi?
Genellikle hayır.
Linux filesystem cache'i performans amacıyla kullanır ve ihtiyaç oluştuğunda belleği yönetir.
Sadece RAM kullanımını ekranda daha düşük göstermek amacıyla cache'i sürekli manuel temizlemek doğru bir optimizasyon yöntemi değildir.
Asıl önemli olan:
-
available bellek- Swap davranışı
- Uygulama performansı
- OOM olayları
- Sürekli büyüyen process'ler
gibi göstergelerdir.
RAM kullanımının yüksek olduğunu nasıl anlarsınız?
Tek bir yüzdeye bakarak karar vermek yerine birkaç belirti birlikte değerlendirilmelidir.
Örneğin:
-
available bellek sürekli çok düşükse- Yoğun swap kullanılıyorsa
- Sistem yavaşlıyorsa
- Process'ler OOM nedeniyle kapanıyorsa
- Uygulamalar restart oluyorsa
- RAM kullanımı sürekli artıyorsa
gerçek bir bellek problemi olabilir.
Buna karşılık RAM'in büyük bölümünün cache tarafından kullanılması tek başına sorun değildir.
Sunucuda gereksiz servisleri nasıl bulabilirsiniz?
Çalışan servisleri incelemek için systemd kullanılan sistemlerde:
systemctl --type=service --state=runningkullanılabilir.
Ancak ne işe yaradığını bilmediğiniz bir servisi yalnızca RAM tükettiği için kapatmayın.
Bazı servisler:
- Ağ
- SSH
- Veritabanı
- Güvenlik
- Web sunucusu
- Sistem yönetimi
için kritik olabilir.
RAM kullanımı için hızlı kontrol sırası
Sunucuda bellek problemi olduğundan şüpheleniyorsanız:
1.
free -h çalıştırın.2. Özellikle
available değerine bakın.3. Swap kullanımını kontrol edin.
4.
top veya htop ile sistemi izleyin.5.
ps aux --sort=-%mem | head ile yüksek RAM kullanan process'leri bulun.6. PM2 kullanıyorsanız
pm2 status kontrol edin.7. Uygulamanın restart sayısını inceleyin.
8. OOM kayıtlarını kontrol edin.
9. RAM tüketiminin zaman içerisinde sürekli artıp artmadığını takip edin.
10. Sorunun uygulama, veritabanı veya sistem kaynaklı olup olmadığını belirleyin.
Sık yapılan hatalar
Linux RAM kullanımını değerlendirirken şu hatalardan kaçının:
- Yalnızca
free değerine bakmak- Cache kullanımını RAM problemi sanmak
- Her yüksek RAM kullanımını memory leak olarak değerlendirmek
- Sorunu araştırmadan process öldürmek
- PostgreSQL process'lerini rastgele kapatmak
- Cache'i sürekli manuel temizlemek
- Swap'ı RAM yerine kalıcı çözüm olarak görmek
- OOM kayıtlarını kontrol etmeden yalnızca uygulamayı restart etmek
Özetle, Linux sunucuda RAM kullanımını kontrol etmek için ilk kullanılabilecek komut
free -h komutudur. Ancak doğru değerlendirme için özellikle available bellek, swap kullanımı ve en fazla RAM tüketen process'ler birlikte incelenmelidir.Sunucuda gerçek bir bellek problemi varsa yalnızca uygulamaları yeniden başlatmak yerine RAM'i hangi process'in neden tükettiğini tespit etmek kalıcı çözüm açısından çok daha önemlidir.
