Linux sunucularda performans sorunları kaçınılmazdır. Yavaşlayan sistem, yüksek CPU kullanımı, bellek tükenmesi gibi durumlarla karşılaştığınızda doğru araçları kullanarak sorunu tespit etmek gerekir. Bu rehberde performans izleme araçlarını ve optimizasyon tekniklerini ele alacağız.
Performans İzleme Temelleri
Linux'ta performans izleme dört ana kaynağı kapsar:
CPU: İşlemci kullanımı ve yük durumu Bellek: RAM kullanımı ve swap aktivitesi Disk I/O: Okuma/yazma hızları ve bekleme süreleri Ağ: Bant genişliği ve bağlantı durumu
Sorun giderme metodolojisi USE (Utilization, Saturation, Errors) yöntemine dayanır: Kullanım oranı, doygunluk ve hatalar kontrol edilir.
CPU İzleme
top Komutu
En temel performans izleme aracı. Gerçek zamanlı sistem durumu gösterir.
top
Üst bölümde:
- load average: 1, 5, 15 dakikalık yük ortalaması
- %Cpu(s): CPU kullanım dağılımı
- us: Kullanıcı işlemleri
- sy: Sistem işlemleri
- id: Boşta
- wa: I/O beklemesi
top İçi Tuşlar
P: CPU kullanımına göre sırala M: Bellek kullanımına göre sırala k: Süreç sonlandır 1: Her CPU çekirdeğini ayrı göster q: Çık
htop
top'un gelişmiş versiyonu. Renkli arayüz, fare desteği.
sudo apt install htop htop
Süreçleri seçip F9 ile sonlandırabilirsiniz. Ağaç görünümü için F5 tuşunu kullanın.
Load Average Yorumlama
load average: 2.50, 1.80, 1.20
Değerler 1, 5, 15 dakikalık ortalamalarıdır. Çekirdek sayısına göre yorumlanır:
4 çekirdekli sistemde 4.00 = %100 kullanım 4 çekirdekli sistemde 8.00 = %200 kullanım (darboğaz)
Genel kural: Load average çekirdek sayısını geçmemeli.
mpstat
CPU çekirdeklerini ayrı ayrı izler:
sudo apt install sysstat mpstat -P ALL 2
Her 2 saniyede tüm çekirdeklerin durumunu gösterir.
Bellek İzleme
free Komutu
Bellek kullanımını gösterir:
free -h
-h: İnsan okunabilir format
Çıktı:
- total: Toplam RAM
- used: Kullanılan
- free: Tamamen boş
- buff/cache: Önbellek için kullanılan
- available: Uygulamalar için kullanılabilir
available değeri önemlidir. free düşük olsa bile available yeterliyse sorun yoktur.
vmstat
Bellek, swap, CPU, I/O durumunu gösterir:
vmstat 2 5
Her 2 saniyede bir, 5 kez çıktı verir.
Önemli sütunlar:
- si (swap in): Swap'tan RAM'e
- so (swap out): RAM'den swap'a
- wa: I/O bekleme
si/so sürekli yüksekse sistem swap yapıyor demektir.
Swap Kullanımını İzleme
swapon -s cat /proc/swaps
Bellek tüketen süreçler:
ps aux --sort=-%mem | head -10
Disk I/O İzleme
iostat
Disk okuma/yazma istatistikleri:
iostat -xz 2
Önemli metrikler:
- %util: Disk kullanım yüzdesi (100'e yakınsa disk doymuş)
- await: Ortalama bekleme süresi (ms)
- r/s, w/s: Saniyedeki okuma/yazma sayısı
iotop
Hangi süreç disk kullanıyor:
sudo apt install iotop sudo iotop
Disk yazan süreçleri gerçek zamanlı gösterir.
df ve du
Disk doluluk kontrolü:
df -h
Dizin boyutları:
du -sh /var/*
En büyük dosyaları bulma:
find /var -type f -exec du -h {} + | sort -rh | head -20
Ağ İzleme
iftop
Ağ trafiğini gerçek zamanlı izler:
sudo apt install iftop sudo iftop
nethogs
Hangi süreç bant genişliği kullanıyor:
sudo apt install nethogs sudo nethogs
ss ve netstat
Açık bağlantılar:
ss -tuln
-t: TCP -u: UDP -l: Dinlenen portlar -n: Sayısal gösterim
Bağlantı sayıları:
ss -s
sar (System Activity Reporter)
Geçmiş performans verileri toplar ve raporlar. Uzun vadeli analiz için vazgeçilmezdir.
Kurulum
sudo apt install sysstat
/etc/default/sysstat dosyasında ENABLED="true" yapın.
Temel Kullanım
CPU geçmişi:
sar -u
Bellek geçmişi:
sar -r
Disk I/O geçmişi:
sar -d
Ağ istatistikleri:
sar -n DEV
Belirli tarih:
sar -u -f /var/log/sysstat/sa20
dstat
Tüm metrikleri tek ekranda gösterir:
sudo apt install dstat dstat
CPU, disk, ağ, bellek aynı anda izlenir.
Performans Optimizasyonu
Swappiness Ayarı
Swappiness, sistemin ne kadar agresif swap kullanacağını belirler. 0-100 arası değer alır. Varsayılan genellikle 60'tır.
Mevcut değer:
cat /proc/sys/vm/swappiness
Düşük swappiness (10-20): RAM'de tutmayı tercih eder, swap'ı azaltır. RAM'i bol sistemler için.
Yüksek swappiness (60-80): Swap'ı daha çok kullanır. Az RAM'li sistemler için.
Veritabanı sunucularında swappiness=10 önerilir.
Geçici değişiklik:
sudo sysctl vm.swappiness=10
Kalıcı değişiklik (/etc/sysctl.conf):
vm.swappiness = 10
Uygula:
sudo sysctl -p
VFS Cache Pressure
Dizin ve inode önbellek tutma eğilimini kontrol eder. Varsayılan 100.
Düşük değer (50): Önbelleği daha uzun tutar, dosya sistemi erişimini hızlandırır.
Ayarlama:
vm.vfs_cache_pressure = 50
I/O Scheduler
Disk I/O zamanlayıcı seçimi:
cat /sys/block/sda/queue/scheduler
SSD'ler için none veya mq-deadline önerilir. HDD'ler için bfq performans sağlar.
Değiştirme:
echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler
Dosya Sistemi Optimizasyonu
noatime mount seçeneği:
Dosya erişim zamanı yazımını kapatır, I/O azaltır.
/etc/fstab'da:
UUID=xxx /home ext4 defaults,noatime 0 2
Bellek Optimizasyonu
Önbelleği temizleme (test amaçlı):
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
Dikkat: Production'da rutin olarak yapmayın.
Huge Pages
Veritabanları için büyük bellek sayfaları:
cat /proc/meminfo | grep Huge
CPU Optimizasyonu
CPU Governor
Performans veya güç tasarrufu modu:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Performans modu:
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Pratik Senaryolar
Yavaş Sunucu Teşhisi
top ile genel duruma bak Load average yüksekse CPU darboğazı wa yüksekse disk I/O sorunu vmstat ile swap aktivitesi kontrol iostat ile disk doygunluğu kontrol Sorunlu süreci tespit et ve önlem al
Bellek Tükenmesi
free -h ile kullanımı kontrol ps aux --sort=-%mem | head ile suçluyu bul Gereksiz servisleri durdur Swappiness'i ayarla Gerekirse RAM ekle
Disk Darboğazı
iostat -xz 2 ile %util kontrol iotop ile yazan süreci bul Log rotation kontrol Eski dosyaları temizle SSD'ye geçiş düşün
İzleme Araçları
Basit izleme için htop, iotop, iftop yeterlidir.
Uzun vadeli analiz için:
- sar ve sysstat paketi
- Prometheus + Grafana
- Netdata (kurulumu kolay, görsel arayüz)
Netdata kurulumu:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
Tarayıcıdan http://sunucu:19999 adresinde izleme paneli açılır.
Sonuç
Linux performans izleme sistematik bir yaklaşım gerektirir. top, vmstat, iostat üçlüsü temel araçlardır. Sorun tespiti için USE metodunu uygulayın: Kullanım, doygunluk, hatalar.
Optimizasyon için swappiness, cache pressure ve I/O scheduler ayarlarını iş yüküne göre yapın. Veritabanı sunucularında düşük swappiness, SSD'lerde uygun scheduler performansı artırır.
Düzenli izleme alışkanlığı edinin. Sorun çıkmadan önce eğilimleri görmek, kriz anında koşturmaktan iyidir.
0 Yorum
Yorum Yaz