- 23 Kasım 2025
- 984
- 56
Linux tabanlı sistemlerin verimli ve kesintisiz çalışması, özellikle sunucu ortamlarında kritik öneme sahiptir. Performans darboğazlarını erkenden tespit etmek ve gidermek, sistem kararlılığını artırmanın yanı sıra kullanıcı deneyimini de iyileştirir. Ancak bu izleme süreci sadece temel araçları kullanmakla kalmaz, aynı zamanda derinlemesine analiz yeteneği gerektirir. Sistem yöneticileri ve geliştiriciler, doğru araçları ve metodolojileri kullanarak potansiyel sorunları proaktif bir şekilde belirleyebilirler. Bu makalede, Linux performansını izlemek ve optimize etmek için kullanılabilecek temel ipuçları ve araçlara odaklanacağız. Bu ipuçları, hem anlık durumu değerlendirme hem de uzun vadeli trendleri analiz etme konusunda size yol gösterecektir.
Bir Linux sisteminde CPU kullanımı, performansı etkileyen en temel göstergelerden biridir. `top` veya `htop` gibi komutlar anlık CPU yükünü, çalışan süreçleri ve her sürecin ne kadar CPU tükettiğini göstermek için mükemmel araçlardır. Bu komutların çıktısında, CPU'nun "user" (kullanıcı), "system" (sistem), "idle" (boşta) ve "iowait" (G/Ç bekleme) durumları gibi çeşitli değerler bulunur. Yüksek "user" veya "system" zamanları, uygulamaların veya çekirdek işlemlerinin yoğun CPU kullandığını işaret edebilir. Öte yandan, yüksek "iowait" değeri, CPU'nun disk veya ağ G/Ç işlemlerinin tamamlanmasını beklediği anlamına gelir ki bu da farklı bir darboğazın göstergesidir. Örneğin, bir web sunucusunda aniden yükselen "user" CPU, yoğun bir trafik artışına işaret edebilir. Bu nedenle, CPU kullanım verilerini yorumlarken, sistemin genel iş yükünü ve beklentilerini göz önünde bulundurmak hayati önem taşır.
Bellek, bir sistemin performansı için CPU kadar kritiktir. Yetersiz bellek veya kötü bellek yönetimi, sistemin yavaşlamasına ve hatta kilitlenmesine neden olabilir. `free -h` komutu, toplam, kullanılan, boş ve önbelleğe alınmış bellek miktarlarını kolayca okunabilir bir formatta sunar. Burada dikkat edilmesi gereken en önemli nokta, "used" bellek miktarı yüksek olsa bile, "buffers" ve "cache" değerlerinin de hesaba katılmasıdır; çünkü Linux çekirdeği kullanılmayan fiziksel belleği disk G/Ç işlemlerini hızlandırmak için önbelleğe alır. Bu nedenle, gerçek boş bellek miktarı, "free" ve "cached" belleklerin toplamına daha yakındır. Swap alanının aşırı kullanımı, genellikle fiziksel belleğin yetersiz olduğunu ve sistemin diske bağımlı hale geldiğini gösterir. Sonuç olarak, bellek sorunları genellikle uygulama bellek sızıntıları veya yetersiz sistem kaynakları nedeniyle ortaya çıkar. Bu durum, OOM (Out Of Memory) Killer'ın devreye girmesine ve rastgele süreçleri sonlandırmasına yol açabilir.
Disk G/Ç (Giriş/Çıkış) performansı, özellikle veritabanları, dosya sunucuları ve sanallaştırma ortamları gibi disk yoğun sistemlerde kilit bir faktördür. `iostat` ve `iotop` gibi araçlar, disk alt sisteminin nasıl davrandığını anlamak için güçlü bilgiler sağlar. `iostat` komutu, disk başına okuma/yazma hızlarını, G/Ç isteklerinin ortalama kuyruk uzunluğunu ve diskin kullanım yüzdesini detaylı bir şekilde gösterir. Yüksek disk kullanım yüzdesi (%util) ve uzun G/Ç kuyrukları (avgqu-sz), disk alt sisteminin bir darboğaz olduğunu işaret eder. Ek olarak, `iotop` aracı, hangi süreçlerin en çok disk G/Ç yaptığını gerçek zamanlı olarak göstererek sorunlu uygulamaları tespit etmeye yardımcı olur. Örneğin, bir yedekleme işlemi veya büyük bir veritabanı sorgusu disk G/Ç'yi aniden artırabilir. Bununla birlikte, bu verileri düzenli olarak izlemek, depolama performansındaki düşüşleri veya donanım arızalarını önceden fark etmeyi sağlar.
Modern sistemler genellikle ağa bağımlıdır ve ağ performansındaki herhangi bir düşüş, genel sistem performansını olumsuz etkileyebilir. `netstat`, `ss` ve `iftop` gibi komutlar, ağ trafiğini ve bağlantılarını izlemek için temel araçlardır. `netstat -tunlp` komutu, hangi portların hangi uygulamalar tarafından kullanıldığını ve hangi bağlantıların açık olduğunu gösterir. `iftop` ise, ağ arayüzündeki gerçek zamanlı bant genişliği kullanımını ve hangi kaynakların ne kadar trafik oluşturduğunu görsel olarak sunar. Yüksek bant genişliği kullanımı, paket kaybı veya yüksek gecikme süreleri, ağ alt sisteminde bir sorun olduğunu işaret edebilir. Bu nedenle, ağdaki yoğunluğun kaynağını tespit etmek için bu araçları kullanmak önemlidir. Örneğin, bir web sunucusunda beklenmedik bir trafik artışı veya DDoS saldırısı, ağ performansını ciddi şekilde etkileyebilir. Bu gibi durumlarda, ağ yapılandırmalarını ve güvenlik duvarı kurallarını kontrol etmek genellikle ilk adımdır.
Sistem performansının temelinde, çalışan süreçlerin etkin yönetimi yatar. Her sürecin CPU ve bellek üzerindeki etkisi, genel sistem sağlığını doğrudan belirler. `ps aux` komutu, sistemdeki tüm süreçleri ayrıntılı bir şekilde listeler; bu liste, her sürecin kullanıcı ID'sini, CPU ve bellek kullanımını, başlangıç zamanını ve komutunu içerir. `htop` veya `top` gibi interaktif araçlar, süreçleri CPU veya bellek kullanımına göre sıralama ve istenmeyen süreçleri kolayca sonlandırma olanağı sunar. Kötü yazılmış bir uygulama veya belleği sızdıran bir süreç, zamanla sistem kaynaklarını tüketerek diğer kritik hizmetlerin performansını düşürebilir. Sonuç olarak, düzenli süreç izleme ve gereksiz veya hatalı süreçlerin tespiti, sistem kararlılığı için elzemdir. Bununla birlikte, süreçlere `nice` veya `renice` komutları ile öncelik atamak, kritik görevlerin daha verimli çalışmasını sağlayabilir.
Log dosyaları, bir Linux sisteminin "kara kutusudur" ve performans sorunlarının kök nedenini anlamak için paha biçilmez bir kaynaktır. Sistem, uygulama ve güvenlik logları, olayları, hataları ve uyarıları zaman damgalarıyla birlikte kaydeder. `journalctl` (systemd tabanlı sistemlerde), `tail -f /var/log/syslog` veya `tail -f /var/log/messages` gibi komutlar, log dosyalarını gerçek zamanlı olarak izlememizi sağlar. Bu sayede, bir performans düşüşü yaşandığında, ilgili logları inceleyerek hangi servisin veya uygulamanın sorun çıkardığını hızlıca tespit edebiliriz. Örneğin, veritabanı sunucusunda yavaşlama yaşandığında, veritabanının hata loglarını kontrol etmek, indeks eksiklikleri veya kilitlenme sorunları gibi ipuçları verebilir. Ek olarak, log dosyalarını düzenli olarak merkezi bir log sunucusuna göndermek ve analiz araçları kullanmak, büyük ölçekli altyapılarda proaktif hata tespitini kolaylaştırır.
Anlık performans izleme önemli olsa da, uzun vadeli trendleri takip etmek, sistemin gelecekteki davranışlarını tahmin etmek ve kapasite planlaması yapmak için kritik bir adımdır. `sar` (System Activity Reporter) aracı, belirli aralıklarla sistem aktivite verilerini toplar ve geçmiş performansı analiz etmeye olanak tanır. Bu araçla, CPU kullanımı, bellek tüketimi, disk G/Ç ve ağ trafiği gibi metriklerin zaman içindeki değişimini görebilirsiniz. Başka bir deyişle, düzenli olarak toplanan bu veriler, performans düşüşlerinin ne zaman başladığını, hangi bileşenin etkilendiğini ve yükteki artışların ne zaman beklendiğini gösterir. Bu nedenle, performans izleme sistemleri (örneğin Prometheus, Zabbix veya Nagios gibi) kullanarak metrikleri toplamak, görselleştirmek ve eşik değerler aşıldığında uyarılar almak, proaktif yönetim için hayati öneme sahiptir. Bu yaklaşım, sadece sorunları çözmekle kalmaz, aynı zamanda potansiyel darboğazları ortaya çıkmadan engellemenizi sağlar.
CPU Kullanımını Anlamak
Bir Linux sisteminde CPU kullanımı, performansı etkileyen en temel göstergelerden biridir. `top` veya `htop` gibi komutlar anlık CPU yükünü, çalışan süreçleri ve her sürecin ne kadar CPU tükettiğini göstermek için mükemmel araçlardır. Bu komutların çıktısında, CPU'nun "user" (kullanıcı), "system" (sistem), "idle" (boşta) ve "iowait" (G/Ç bekleme) durumları gibi çeşitli değerler bulunur. Yüksek "user" veya "system" zamanları, uygulamaların veya çekirdek işlemlerinin yoğun CPU kullandığını işaret edebilir. Öte yandan, yüksek "iowait" değeri, CPU'nun disk veya ağ G/Ç işlemlerinin tamamlanmasını beklediği anlamına gelir ki bu da farklı bir darboğazın göstergesidir. Örneğin, bir web sunucusunda aniden yükselen "user" CPU, yoğun bir trafik artışına işaret edebilir. Bu nedenle, CPU kullanım verilerini yorumlarken, sistemin genel iş yükünü ve beklentilerini göz önünde bulundurmak hayati önem taşır.
Bellek Yönetimine Derin Bir Bakış
Bellek, bir sistemin performansı için CPU kadar kritiktir. Yetersiz bellek veya kötü bellek yönetimi, sistemin yavaşlamasına ve hatta kilitlenmesine neden olabilir. `free -h` komutu, toplam, kullanılan, boş ve önbelleğe alınmış bellek miktarlarını kolayca okunabilir bir formatta sunar. Burada dikkat edilmesi gereken en önemli nokta, "used" bellek miktarı yüksek olsa bile, "buffers" ve "cache" değerlerinin de hesaba katılmasıdır; çünkü Linux çekirdeği kullanılmayan fiziksel belleği disk G/Ç işlemlerini hızlandırmak için önbelleğe alır. Bu nedenle, gerçek boş bellek miktarı, "free" ve "cached" belleklerin toplamına daha yakındır. Swap alanının aşırı kullanımı, genellikle fiziksel belleğin yetersiz olduğunu ve sistemin diske bağımlı hale geldiğini gösterir. Sonuç olarak, bellek sorunları genellikle uygulama bellek sızıntıları veya yetersiz sistem kaynakları nedeniyle ortaya çıkar. Bu durum, OOM (Out Of Memory) Killer'ın devreye girmesine ve rastgele süreçleri sonlandırmasına yol açabilir.
Disk G/Ç Performansını İzleme
Disk G/Ç (Giriş/Çıkış) performansı, özellikle veritabanları, dosya sunucuları ve sanallaştırma ortamları gibi disk yoğun sistemlerde kilit bir faktördür. `iostat` ve `iotop` gibi araçlar, disk alt sisteminin nasıl davrandığını anlamak için güçlü bilgiler sağlar. `iostat` komutu, disk başına okuma/yazma hızlarını, G/Ç isteklerinin ortalama kuyruk uzunluğunu ve diskin kullanım yüzdesini detaylı bir şekilde gösterir. Yüksek disk kullanım yüzdesi (%util) ve uzun G/Ç kuyrukları (avgqu-sz), disk alt sisteminin bir darboğaz olduğunu işaret eder. Ek olarak, `iotop` aracı, hangi süreçlerin en çok disk G/Ç yaptığını gerçek zamanlı olarak göstererek sorunlu uygulamaları tespit etmeye yardımcı olur. Örneğin, bir yedekleme işlemi veya büyük bir veritabanı sorgusu disk G/Ç'yi aniden artırabilir. Bununla birlikte, bu verileri düzenli olarak izlemek, depolama performansındaki düşüşleri veya donanım arızalarını önceden fark etmeyi sağlar.
Ağ Performansını Değerlendirme
Modern sistemler genellikle ağa bağımlıdır ve ağ performansındaki herhangi bir düşüş, genel sistem performansını olumsuz etkileyebilir. `netstat`, `ss` ve `iftop` gibi komutlar, ağ trafiğini ve bağlantılarını izlemek için temel araçlardır. `netstat -tunlp` komutu, hangi portların hangi uygulamalar tarafından kullanıldığını ve hangi bağlantıların açık olduğunu gösterir. `iftop` ise, ağ arayüzündeki gerçek zamanlı bant genişliği kullanımını ve hangi kaynakların ne kadar trafik oluşturduğunu görsel olarak sunar. Yüksek bant genişliği kullanımı, paket kaybı veya yüksek gecikme süreleri, ağ alt sisteminde bir sorun olduğunu işaret edebilir. Bu nedenle, ağdaki yoğunluğun kaynağını tespit etmek için bu araçları kullanmak önemlidir. Örneğin, bir web sunucusunda beklenmedik bir trafik artışı veya DDoS saldırısı, ağ performansını ciddi şekilde etkileyebilir. Bu gibi durumlarda, ağ yapılandırmalarını ve güvenlik duvarı kurallarını kontrol etmek genellikle ilk adımdır.
Süreç Yönetimi ve Kaynak Tüketimi
Sistem performansının temelinde, çalışan süreçlerin etkin yönetimi yatar. Her sürecin CPU ve bellek üzerindeki etkisi, genel sistem sağlığını doğrudan belirler. `ps aux` komutu, sistemdeki tüm süreçleri ayrıntılı bir şekilde listeler; bu liste, her sürecin kullanıcı ID'sini, CPU ve bellek kullanımını, başlangıç zamanını ve komutunu içerir. `htop` veya `top` gibi interaktif araçlar, süreçleri CPU veya bellek kullanımına göre sıralama ve istenmeyen süreçleri kolayca sonlandırma olanağı sunar. Kötü yazılmış bir uygulama veya belleği sızdıran bir süreç, zamanla sistem kaynaklarını tüketerek diğer kritik hizmetlerin performansını düşürebilir. Sonuç olarak, düzenli süreç izleme ve gereksiz veya hatalı süreçlerin tespiti, sistem kararlılığı için elzemdir. Bununla birlikte, süreçlere `nice` veya `renice` komutları ile öncelik atamak, kritik görevlerin daha verimli çalışmasını sağlayabilir.
Log Dosyalarını Etkin Kullanma
Log dosyaları, bir Linux sisteminin "kara kutusudur" ve performans sorunlarının kök nedenini anlamak için paha biçilmez bir kaynaktır. Sistem, uygulama ve güvenlik logları, olayları, hataları ve uyarıları zaman damgalarıyla birlikte kaydeder. `journalctl` (systemd tabanlı sistemlerde), `tail -f /var/log/syslog` veya `tail -f /var/log/messages` gibi komutlar, log dosyalarını gerçek zamanlı olarak izlememizi sağlar. Bu sayede, bir performans düşüşü yaşandığında, ilgili logları inceleyerek hangi servisin veya uygulamanın sorun çıkardığını hızlıca tespit edebiliriz. Örneğin, veritabanı sunucusunda yavaşlama yaşandığında, veritabanının hata loglarını kontrol etmek, indeks eksiklikleri veya kilitlenme sorunları gibi ipuçları verebilir. Ek olarak, log dosyalarını düzenli olarak merkezi bir log sunucusuna göndermek ve analiz araçları kullanmak, büyük ölçekli altyapılarda proaktif hata tespitini kolaylaştırır.
Uzun Vadeli Performans Trendlerini Takip Etme
Anlık performans izleme önemli olsa da, uzun vadeli trendleri takip etmek, sistemin gelecekteki davranışlarını tahmin etmek ve kapasite planlaması yapmak için kritik bir adımdır. `sar` (System Activity Reporter) aracı, belirli aralıklarla sistem aktivite verilerini toplar ve geçmiş performansı analiz etmeye olanak tanır. Bu araçla, CPU kullanımı, bellek tüketimi, disk G/Ç ve ağ trafiği gibi metriklerin zaman içindeki değişimini görebilirsiniz. Başka bir deyişle, düzenli olarak toplanan bu veriler, performans düşüşlerinin ne zaman başladığını, hangi bileşenin etkilendiğini ve yükteki artışların ne zaman beklendiğini gösterir. Bu nedenle, performans izleme sistemleri (örneğin Prometheus, Zabbix veya Nagios gibi) kullanarak metrikleri toplamak, görselleştirmek ve eşik değerler aşıldığında uyarılar almak, proaktif yönetim için hayati öneme sahiptir. Bu yaklaşım, sadece sorunları çözmekle kalmaz, aynı zamanda potansiyel darboğazları ortaya çıkmadan engellemenizi sağlar.
