Linux sunucularda CPU aşırı yüklenmesi (overload), sistem performansını ciddi şekilde etkileyen yaygın bir sorundur.
Linux sunucularda CPU aşırı yüklenmesi (overload), sistem performansını ciddi şekilde etkileyen yaygın bir sorundur. Bu durum, sunucunun yanıt verme süresini uzatır, kullanıcı deneyimini bozar ve hatta hizmet kesintilerine yol açabilir. CPU overload analizi, sorunun kök nedenini belirleyerek etkili çözümler üretmeyi sağlar. Bu makalede, kurumsal ortamlar için pratik izleme teknikleri, teşhis adımları ve optimizasyon stratejilerini adım adım ele alacağız. Özellikle yüksek trafikli web sunucuları veya veritabanı sistemlerinde bu analizler kritik öneme sahiptir. Başlamak için standart araçları kullanarak gerçek zamanlı ve tarihsel verileri inceleyeceğiz.
Linux sunucularda CPU yükünü anlık olarak takip etmek, overload’un ilk belirtilerini yakalamak için esastır. Standart top komutu, süreçleri CPU kullanımına göre sıralayarak en yoğun tüketicileri hızlıca gösterir. Örneğin, terminalde top komutunu çalıştırdığınızda, %CPU sütununu izleyin; %100’e yakın değerler acil müdahale gerektirir. Daha gelişmiş bir alternatif olan htop, renkli arayüzü ve interaktif filtreleme seçenekleriyle üstünlük sağlar. htop’u yüklemek için sudo apt install htop (Debian tabanlı) veya sudo yum install htop (Red Hat tabanlı) komutlarını kullanın. Bu araçlarla, belirli bir sürecin CPU tüketimini F2 tuşuyla filtreleyerek analiz edebilirsiniz.
Pratik bir örnek: Bir Apache web sunucusunda yüksek CPU yükü görüyorsanız, htop’ta PID’leri not alın ve ps aux --sort=-%cpu | head -10 ile en üst 10 süreci listeleyin. Bu adım, sorunun belirli bir web uygulamasından mı yoksa sistem servisi mi kaynaklandığını netleştirir. Ayrıca, uptime komutuyla load average değerlerini kontrol edin; 5 dakikalık load average, CPU çekirdek sayısından yüksekse overload doğrulanmış demektir. Bu izleme rutini, kurumsal sunucularda proaktif yönetim için vazgeçilmezdir ve günlük bakım prosedürlerine entegre edilmelidir.
Sorunun zaman içindeki seyrini anlamak için sysstat paketindeki araçlar idealdir. Öncelikle sudo apt install sysstat ile sysstat’ı yükleyin. sar -u 1 5 komutu, her 1 saniyede 5 örnekte CPU kullanımını raporlar; %user, %system ve %idle oranlarını inceleyin. %idle düşükse (%10’un altında), sürekli yük altında olduğunuzu gösterir. mpstat aracı ise çok çekirdekli sistemlerde her CPU’yu ayrı ayrı analiz eder: mpstat -P ALL 1 10 ile 10 örnek alın ve en yoğun çekirdeği belirleyin.
sar komutunun gücü, tarihsel verilerde yatar. sar -u -f /var/log/sysstat/sa$(date +%d) ile bugünkü veriyi inceleyin; timestamps ile pik saatleri tespit edin. Örneğin, gece 02:00’de %user 90’a çıkıyorsa, cron job’ları şüpheli hale gelir. Bu verileri grafikleştirmek için sar verilerini CSV’ye aktarın ve Excel’de görselleştirin, böylece ekip toplantılarında somut kanıt sunun. Kurumsal olarak, sar’ı cron ile otomatik raporlamaya alın: 0 9 * * * /usr/lib/sysstat/sar -u > /raporlar/cpu_rapor_$(date +\%Y\%m\%d).txt.
mpstat, NUMA mimarili sunucularda dengesiz yük dağılımını ortaya çıkarır. mpstat -P 0 1 60 ile CPU 0’ı 60 saniye izleyin; eğer %iowait yüksekse (%20+), disk I/O CPU’yu bekletiyordur. Teşhis için iostat -x 1 5 ile çapraz doğrulama yapın. Bu detaylı analiz, sanallaştırma ortamlarında (örneğin KVM) sanal makinelerin CPU affinity’sini ayarlamanıza yardımcı olur: taskset -cp 0-3 PID ile süreci belirli çekirdeklere pinleyin.
CPU overload’un yaygın nedenleri arasında runaway süreçler, bellek sızıntıları ve yanlış yapılandırılmış uygulamalar yer alır. Önce top ile en yüksek CPU tüketen süreci öldürün: kill -9 PID. Sürekli tekrarlıyorsa, strace ile sistem çağrılarını izleyin: strace -p PID -c, en sık çağrıyı (örneğin read/write) belirler. Ağ kaynaklı overload için netstat -an | grep TIME_WAIT | wc -l ile bağlantı sayısını kontrol edin; yüksekse iptables kurallarıyla sınırlayın.
Optimizasyon için nicelendirme uygulayın: cpulimit -p PID -l 50 ile süreci %50 CPU ile sınırlayın. Uzun vadede, uygulamaları profile edin; örneğin MySQL için pt-query-digest. Sunucu ölçeklendirmede, CPU affinity ve irqbalance servisini etkinleştirin: systemctl enable irqbalance. Bu adımlar, kurumsal sunucularda %30’a varan performans kazancı sağlar ve SLA’ları korur.
Yavaş sorgular CPU’yu şişirir; PostgreSQL’de EXPLAIN ANALYZE SELECT ...; ile sorgu planını inceleyin ve indeks ekleyin. Node.js uygulamalarında cluster modülüyle çok işlemcili hale getirin: cluster.fork(). Bu değişiklikler, geliştirme ekibinin sorumluluğundadır ve CI/CD pipeline’ına entegre edilmelidir. Test ortamında yük testi yaparak (Apache Bench ile) doğrulanmalıdır.
Sonuç olarak, Linux sunucularda CPU overload analizi düzenli bir disiplin gerektirir. Gerçek zamanlı araçlarla hızlı müdahale, tarihsel verilerle kök neden analizi ve proaktif optimizasyonlar birleştirildiğinde, sistem kararlılığı artar. Kurumsal ekipler, bu yöntemleri otomasyon script’leriyle (örneğin Nagios veya Prometheus) güçlendirerek kesintisiz hizmet sunabilir. Düzenli bakım ve ekip eğitimiyle, potansiyel krizler önlenecek ve operasyonel verimlilik maksimize edilecektir.