Merhaba arkadaşlar, bugün sizlere Linux sunucularınızda bellek (RAM) kullanımınızı doğru bir şekilde analiz etmenizi sağlayacak üç temel komutu, `free`, `top` ve `vmstat`'ı detaylıca anlatacağım. Özellikle "Sunucum neden yavaş?", "RAM'im doldu mu?" veya "Swap kullanımı normal mi?" gibi sorularınızın cevabını bu komutlarla bulacaksınız. Ben de kendi sistemlerimi monitor ederken sıklıkla bu araçlara başvuruyorum.
Bellek Analizine Nereden Başlamalı?
İlk bakmamız gereken yer, genel bellek durumunu özetleyen `free` komutu. Bu komut, toplam, kullanılan, boş ve swap belleğinizi gösterir. Ancak dikkat! Varsayılan çıktı biraz yanıltıcı olabilir.
Bu komut, ön belleğe (cache) alınmış bellek miktarını da "kullanılan" kısmına ekler. Aslında bu bellek, gerektiğinde hemen serbest bırakılabileceği için "kullanılabilir" sayılır. Doğru durumu görmek için `-h` (human-readable) ve `-w` (wide) flag'lerini kullanmanızı öneririm.
Çıktıda available satırına bakın. Bu değer, uygulamalarınızın gerçekten kullanabileceği boş bellek miktarını gösterir. "used" değeri yüksek olsa bile "available" yeterliyse sorun yok demektir.
Canlı ve Detaylı İzleme: top Komutu
Genel durumu gördükten sonra, hangi süreçlerin ne kadar bellek tükettiğini anlamak için `top` komutuna geçiyoruz. Komutu çalıştırdığınızda karşınıza canlı bir ekran gelecek.
Burada dikkat etmeniz gereken birkaç sütun var:
%MEM: Sürecin toplam fiziksel belleğin yüzde kaçını kullandığı.
VIRT: Sanal bellek boyutu. Disk üzerindeki swap alanı da dahil tüm talep edilen bellektir.
RES (Resident Memory): Sürecin o anda fiziksel RAM'de ne kadar yer kapladığı. Asıl odaklanmamız gereken budur.
SHR (Shared Memory): Diğer süreçlerle paylaşılan bellek miktarı.
`top` içindeyken, bellek kullanımına göre sıralamak için Shift+M tuşlarına basabilirsiniz. Çıkış yapmak için ise q tuşuna basın.
Sistem Geneli İstatistikler: vmstat Komutu
`vmstat`, bellek, swap, disk I/O ve CPU istatistiklerini bir arada ve daha sistem seviyesinde görmemizi sağlar. Özellikle swap aktivitesini (si/so) takip etmek için çok kullanışlıdır. Ben genelde 2 saniye aralıklarla göstermesini sağlarım.
Bu komut her 2 saniyede bir istatistik günceller. Çıktıda şu alanlara odaklanın:
swpd: Kullanılan swap miktarı.
free: Boş bellek miktarı (free komutundaki gibi cache'lenmişi içermez, dikkat).
si (swap in): Diskten swap alanına okunan bellek miktarı (kB/sn). Sürekli bir değer varsa RAM yetersiz demektir, ciddi bir performans sorunudur!
so (swap out): Swap alanından diske yazılan bellek miktarı (kB/sn).
Komutu durdurmak için Ctrl+C tuşlarına basın.
Kritik Uyarılar ve Yorumlama
Bu komutların çıktılarını yorumlarken şu noktalara çok dikkat etmelisiniz:
1. Yüksek RAM Kullanımı Kötü Değildir: Linux, boş RAM'i disk önbelleği (cache) ve tampon (buffer) için kullanarak performansı artırır. free komutundaki "available" değeri düşük değilse paniğe kapılmayın.
2. Asıl Tehlike Swap Aktivitesidir: `vmstat` ile gördüğünüz si/so değerleri sürekli 0'dan büyükse, fiziksel bellek yetersiz kalıyor ve sistem yavaşlıyordur. Acil müdahale (RAM artırımı veya bellek tüketen süreçleri bulup optimize etme) gerekir.
3. Süreç Bazında Analiz Şart: `top` ile en çok RAM (`RES`) tüketen süreçleri tespit edin. Bazen tek bir uygulama (örneğin yanlış konfigüre edilmiş bir Java prosesi) tüm sistemi kilitleyebilir.
Umarım bu rehber, sunucularınızın bellek sağlığını kontrol etmenizde faydalı olur. Bu komutları düzenli olarak kullanmak, olası sorunları büyümeden önce görmenizi sağlayacaktır.
Peki siz bellek kullanımını izlemek için hangi araçları veya komut kombinasyonlarını tercih ediyorsunuz? Özellikle üretim sunucularınızda nasıl bir monitor etme stratejiniz var? Tecrübelerinizi ve sorularınızı aşağıya yazmayı unutmayın.
İlk bakmamız gereken yer, genel bellek durumunu özetleyen `free` komutu. Bu komut, toplam, kullanılan, boş ve swap belleğinizi gösterir. Ancak dikkat! Varsayılan çıktı biraz yanıltıcı olabilir.
Bash:
free
Bu komut, ön belleğe (cache) alınmış bellek miktarını da "kullanılan" kısmına ekler. Aslında bu bellek, gerektiğinde hemen serbest bırakılabileceği için "kullanılabilir" sayılır. Doğru durumu görmek için `-h` (human-readable) ve `-w` (wide) flag'lerini kullanmanızı öneririm.
Bash:
free -hw
Çıktıda available satırına bakın. Bu değer, uygulamalarınızın gerçekten kullanabileceği boş bellek miktarını gösterir. "used" değeri yüksek olsa bile "available" yeterliyse sorun yok demektir.
Genel durumu gördükten sonra, hangi süreçlerin ne kadar bellek tükettiğini anlamak için `top` komutuna geçiyoruz. Komutu çalıştırdığınızda karşınıza canlı bir ekran gelecek.
Bash:
top
Burada dikkat etmeniz gereken birkaç sütun var:
%MEM: Sürecin toplam fiziksel belleğin yüzde kaçını kullandığı.
VIRT: Sanal bellek boyutu. Disk üzerindeki swap alanı da dahil tüm talep edilen bellektir.
RES (Resident Memory): Sürecin o anda fiziksel RAM'de ne kadar yer kapladığı. Asıl odaklanmamız gereken budur.
SHR (Shared Memory): Diğer süreçlerle paylaşılan bellek miktarı.
`top` içindeyken, bellek kullanımına göre sıralamak için Shift+M tuşlarına basabilirsiniz. Çıkış yapmak için ise q tuşuna basın.
`vmstat`, bellek, swap, disk I/O ve CPU istatistiklerini bir arada ve daha sistem seviyesinde görmemizi sağlar. Özellikle swap aktivitesini (si/so) takip etmek için çok kullanışlıdır. Ben genelde 2 saniye aralıklarla göstermesini sağlarım.
Bash:
vmstat 2
Bu komut her 2 saniyede bir istatistik günceller. Çıktıda şu alanlara odaklanın:
swpd: Kullanılan swap miktarı.
free: Boş bellek miktarı (free komutundaki gibi cache'lenmişi içermez, dikkat).
si (swap in): Diskten swap alanına okunan bellek miktarı (kB/sn). Sürekli bir değer varsa RAM yetersiz demektir, ciddi bir performans sorunudur!
so (swap out): Swap alanından diske yazılan bellek miktarı (kB/sn).
Komutu durdurmak için Ctrl+C tuşlarına basın.
Bu komutların çıktılarını yorumlarken şu noktalara çok dikkat etmelisiniz:
1. Yüksek RAM Kullanımı Kötü Değildir: Linux, boş RAM'i disk önbelleği (cache) ve tampon (buffer) için kullanarak performansı artırır. free komutundaki "available" değeri düşük değilse paniğe kapılmayın.
2. Asıl Tehlike Swap Aktivitesidir: `vmstat` ile gördüğünüz si/so değerleri sürekli 0'dan büyükse, fiziksel bellek yetersiz kalıyor ve sistem yavaşlıyordur. Acil müdahale (RAM artırımı veya bellek tüketen süreçleri bulup optimize etme) gerekir.
3. Süreç Bazında Analiz Şart: `top` ile en çok RAM (`RES`) tüketen süreçleri tespit edin. Bazen tek bir uygulama (örneğin yanlış konfigüre edilmiş bir Java prosesi) tüm sistemi kilitleyebilir.
Umarım bu rehber, sunucularınızın bellek sağlığını kontrol etmenizde faydalı olur. Bu komutları düzenli olarak kullanmak, olası sorunları büyümeden önce görmenizi sağlayacaktır.
Peki siz bellek kullanımını izlemek için hangi araçları veya komut kombinasyonlarını tercih ediyorsunuz? Özellikle üretim sunucularınızda nasıl bir monitor etme stratejiniz var? Tecrübelerinizi ve sorularınızı aşağıya yazmayı unutmayın.