Linux yönetimi ve yazılım geliştirme alanında sistem performansını anlamak bir lüks değil, bir zorunluluktur. Yüksek trafikli bir web sunucusu yönetiyor, yavaş bir veritabanını hallediyor veya mikro hizmet mimarisini optimize ediyor olun; darboğazları hızla teşhis etme yeteneği, sorunsuz bir kullanıcı deneyimi ile felaket bir kesinti arasındaki farkı belirleyebilir. Bu rehber, sistem performansının temel direkleri olan CPU, bellek, disk G/Ç (Giriş/Çıkış) ve ağ analizine derinlemesine inerek, en üst düzey verimliliği korumanıza yardımcı olacak araçlar ve teknikler sunar.
Altın Standart: nmon ve Sistem Metrikleri
Karmaşık izleme ajanlarını dağıtmadan önce, gerçek zamanlı içgörüler sağlayan yerleşik araçları ustalaşmak kritik öneme sahiptir.
nmon (Nigel'in İzleyicisi), bu kategoride tartışmasız en güçlü ancak yeterince takdir edilmeyen araçtır. Sisteminizin sağlığının kapsamlı bir görünümünü tek, okuması kolay bir ekranda sunar.
Sisteminizin performansının bir taban çizgisini yakalamak için şunu çalıştırın:
nmon -s 5 -c 12 -f -o baseline_result.nmon
Bu komut, verileri 12 yineleme boyunca her 5 saniyede bir örnekler ve çıktıyı
nmonanalyser aracı kullanılarak görselleştirilebilecek bir formatta kaydeder. Bu yaklaşım, kaynak kullanımındaki artışları belirli uygulama olaylarıyla ilişkilendirmenize olanak tanır.
CPU Analizi: Yük Ortalamasının Ötesinde
Yalnızca yük ortalamasına güvenmek, özellikle çok sayıda CPU çekirdeğine sahip sistemlerde yanıltıcı olabilir. Gerçek iş yükü ile G/Ç için bekleyen süreçler arasında ayrım yapmalısınız.
Bağlam geçişlerini ve çalışma kuyruğu uzunluklarını gözlemlemek için
vmstat 1 kullanın.
si (takas içe) ve
so (takas dışa) sütunları sıfır değilse, sisteminiz bellek baskısı nedeniyle aşırı takas yapıyor (thrashing) ve bu durum CPU verimliliğini ciddi şekilde etkiler. Belirli bir CPU'ya özgü profil oluşturma için
top veya
htop, en büyük tüketicileri belirlemek için mükemmeldir; ancak belirli süreçlerin derinlemesine profil oluşturma için
perf veya
systemtap gibi araçları kullanarak çekirdek düzeyindeki darboğazları analiz etmeyi düşünün.
Bellek Yönetimi: Takas ve Önbellekleme
Linux'ta boş bellek, israf edilmiş bellektir. Çekirdek, G/Ç işlemlerini hızlandırmak için disk sayfalarını RAM'de agresif bir şekilde önbelleğe alır.
buff/cache sütunu yüksekse, düşük mevcut bellek karşısında endişelenmeyin. Ancak bellek baskısı arttığında, OOM (Bellek Dışı) öldürücüsü süreçleri sonlandırabilir.
Bellek kullanımını
free -m veya
smem ile izleyin. Yüksek takas kullanımı fark ederseniz,
ps aux --sort=-rss | head -n 10 kullanarak sorumlu olan süreçleri araştırın. Bellek performansını optimize etmek için
/etc/sysctl.conf dosyasındaki
vm.swappiness parametresini ayarlamayı düşünün. Bunu daha düşük bir değere (örneğin 10) ayarlamak, çekirdeğin anonim belleği takas dışına çıkarmasını engelleyerek daha fazla veriyin, erişimin daha hızlı olduğu fiziksel RAM'de kalmasını sağlar.
Disk G/Ç: Sessiz Darboğaz
Disk gecikmesi, genellikle uygulama yavaşlamalarının birincil nedenidir.
iostat ve
iotop gibi araçlar burada vazgeçilmezdir.
iostat -x 1 5
Yüksek bir
%util (kullanım yüzdesi) veya yüksek ortalama kuyruk uzunluğu (
avgqu-sz) arayın.
%util %100'e yakınsa, diskiniz doygunluğa ulaşmıştır. Ayrıca ortalama hizmet süresini (
await) kontrol edin. Bu değer yüksekse, tek tek G/Ç isteklerinin tamamlanması için çok uzun sürdüğünü gösterir; bu da ya donanım arızasını ya da aşırı parçalanmayı ima eder.
Ağ Analizi: Gecikme ve Geçiş Kapasitesi
Ağ sorunları ince ama etkili olabilir. Aktif bağlantıları ve soket durumlarını incelemek için
netstat veya modern
ss komutunu kullanın.
ss -s
TCP durumu
TIME_WAIT veya
CLOSE_WAIT içindeki anormal soket sayılarına bakın. Yüksek gecikme, temel dönüş-yol süreleri için
ping veya ağ yolu boyunca paket kaybı veya gecikme artışlarının nerede oluştuğunu belirlemek için
mtr (My Traceroute) kullanılarak teşhis edilebilir. Paket düzeyi analiz için
tcpdump veya
tshark, tek tek paketleri incelemenize olanak tanır; bu da bozuk verileri veya yeniden iletilmeleri belirlemeye yardımcı olur.
Ölçeklendirme ve Optimizasyon Stratejileri
İyileştirmeleri nicelendirmek için güvenilir ölçeklendirmelere ihtiyacınız vardır. CPU için
sysbench veya
unixbench kullanın. Disk G/Ç için
fio endüstri standardıdır; blok boyutları, kuyruk derinlikleri ve G/Ç desenleri üzerinde granüler kontrol sunar.
Optimizasyon yalnızca çekirdek parametrelerini ayarlamakla ilgili değildir; çoğu zaman mimari değişikliklerdir. Uygulamanızın TCP el sıkışma yükünü azaltmak için bağlantı havuzu kullandığından emin olun, yüksek IOPS iş yükleri için SSD veya NVMe sürücüler kullanın ve veritabanı sorgularını hafifletmek için Redis veya Memcached kullanarak sıklıkla erişilen verileri bellekte önbelleğe almayı düşünün.
Sonuç
Etkili sistem performansı izleme, tekrarlayan bir süreçtir.
nmon ve
sar gibi araçlar kullanarak kapsamlı veri toplama ile başlayın, CPU, bellek, disk veya ağ alanlarındaki belirli darboğazları analiz edin ve hedefe yönelik optimizasyonlar uygulayın. Bu açık kaynak araçları ustalaşarak, sağlam, ölçeklenebilir ve yüksek performanslı Linux sistemlerini koruma gücüne sahip olursunuz.