Tüm Sistemler Çalışıyor
Network Durumu
Ana Sayfa Blog Yüksek CPU Kullanımı Sorunu Nasıl Teşhis Edilir? 7 Adımda Kök Neden Analizi

Yüksek CPU Kullanımı Sorunu Nasıl Teşhis Edilir? 7 Adımda Kök Neden Analizi

Yüksek CPU Kullanımı Sorunu Nasıl Teşhis Edilir? 7 Adımda Kök Neden Analizi

Yüksek CPU Kullanımının İşletmenize Etkisi Nedir?

Yüksek CPU Kullanımının İşletmenize Etkisi Nedir? - Yüksek CPU Kullanımı Sorunu Nasıl Teşhis Edilir
Yüksek CPU Kullanımının İşletmenize Etkisi Nedir?

Bir web sitesinin ya da uygulamanın yanıt süresi, doğrudan sunucunun işlemci (CPU) yüküne bağlıdır. CPU %80'in üzerine çıktığında, istekler kuyruklanır, yanıt süresi uzar ve hatta zaman zaman servis kesintileri yaşanır. Özellikle e-ticaret hosting hizmeti sunan işletmelerde %30’luk bir gecikme, satış kaybına dönüşebilir. Bu yüzden yüksek CPU kullanımı, sadece teknik bir sorun değil, aynı zamanda maddi bir risk olarak değerlendirilmelidir.

Yüksek CPU’nun maliyeti sadece performans kaybı ile sınırlı kalmaz; gereksiz ölçeklendirme, ekstra VDS veya dedicated sunucu satın alma gibi maliyetli kararların alınmasına da yol açar. Bu yüzden problemi erken aşamada tespit edip kök nedenini ortadan kaldırmak, %40’a varan maliyet tasarrufu sağlayabilir.

CPU Kullanımını İzlemek İçin Temel Araçlar ve Komutlar

Linux tabanlı sunucularda CPU kullanımını gerçek zamanlı izlemek için top, htop, mpstat ve pidstat gibi araçlar vazgeçilmezdir. top komutu, anlık CPU, bellek ve proses bilgilerini tablo şeklinde sunar; htop ise renkli ve etkileşimli bir arayüz sağlar. mpstat -P ALL 5 komutu ise her bir çekirdeğin kullanımını 5 saniyelik periyotlarla gösterir, bu da tek bir çekirdeğin aşırı yüklenip yüklenmediğini anlamamıza yardımcı olur.

Örneğin, pidstat -u 1 10 komutu, 1 saniyelik aralıklarla 10 satır veri üreterek hangi proseslerin CPU zamanını tükettiğini detaylı bir şekilde raporlar. Bu verileri CSV’ye aktararak AMD Ryzen VDS sunucularında grafiksel analiz de yapabilirsiniz.

Adım 1: Sorunun Tekrarlanabilirliğini Doğrulama

CPU kullanımının geçici bir dalgalanma mı yoksa sürekli bir sorun mu olduğunu anlamak için izleme süresi kritik bir adımdır. Prometheus ve Grafana entegrasyonu ile 24‑48 saatlik veri toplamak, sorunun belirli saatlerde mi (örneğin yoğun trafik zamanları) yoksa rastgele mi ortaya çıktığını gösterir.

Eğer izleme verileri, CPU kullanımının %90’ın üzerine çıktığı anların bir cron job, yedekleme işlemi ya da yoğun API çağrısı ile çakıştığını gösteriyorsa, sorunun kaynağı planlı bir görev olabilir. Bu durumda görev zamanlamasını değiştirerek anlık yükü hafifletebilirsiniz. Aksi takdirde, rastgele artışlar daha derin bir analiz gerektirir.

Adım 2: En Yüksek CPU Tüketen İşlemleri Belirleme

Yüksek CPU kullanımının kaynağını bulmak için top -b -n 1 | head -15 komutunu çalıştırarak ilk 15 satırdaki en çok CPU tüketen süreçleri listeleyin. Çıktıda PID, USER, %CPU ve COMMAND sütunları kritik bilgiler verir.

Eğer bir PHP-FPM işçisi %70 CPU tüketiyorsa, bu durum WordPress hosting ortamında bir eklenti ya da hatalı sorgunun göstergesi olabilir. Benzer şekilde, bir mysqld süreci yüksek CPU harcıyorsa, veritabanı sorgularını EXPLAIN ile analiz etmek gerekir. Bu aşamada, “nice” ve “renice” komutlarıyla düşük öncelikli işlemlere öncelik vererek sistemin genel dengesini koruyabilirsiniz.

Adım 3: Sistem ve Uygulama Loglarını İnceleme

Adım 3: Sistem ve Uygulama Loglarını İnceleme - Yüksek CPU Kullanımı Sorunu Nasıl Teşhis Edilir
Adım 3: Sistem ve Uygulama Loglarını İnceleme

CPU dalgalanmaları genellikle hatalı konfigürasyon ya da uygulama hatalarından kaynaklanır. /var/log/syslog, /var/log/messages ve web sunucusu logları (Apache ya da Nginx) incelenmelidir. Özellikle “OOM killer” (Out Of Memory) mesajları, bellek yetersizliğinin CPU’yu zorladığını gösterir.

Log analizinde grep -i "error" /var/log/nginx/error.log gibi filtreler kullanarak sık tekrarlanan hataları tespit edebilirsiniz. Ayrıca, WAF güvenlik duvarı logları, DDoS saldırılarının CPU üzerindeki baskısını ortaya çıkarabilir; bu durumda IP engelleme veya rate limiting uygulanmalıdır.

Adım 4: Kaynak Kullanımını Optimize Etmek İçin Konfigürasyon Ayarları

CPU yoğunluğu sıkça konfigürasyon hatalarından kaynaklanır. Örneğin, MySQL için innodb_buffer_pool_size değerinin çok düşük ayarlanması, disk I/O’yı artırarak CPU’yu zorlayabilir. my.cnf dosyasında bu parametreyi RAM’in %70’i kadar ayarlamak tipik bir optimizasyondur.

Web sunucularında ise worker_processes ve worker_connections ayarları, özellikle fiziksel sunucu (dedicated server) ortamlarında CPU kullanımını dengelemek için kritik öneme sahiptir. Nginx konfigürasyonunda worker_processes auto; ifadesi, çekirdek sayısına göre otomatik ölçeklendirme yapar ve aşırı CPU tüketimini önler.

Adım 5: Yazılım Güncellemeleri ve Güvenlik Yamaları

Eski çekirdek (kernel) sürümleri ve kütüphaneler, CPU verimliliğini düşüren hatalar içerebilir. Özellikle kernel güncellemeleri, CPU scheduler iyileştirmeleri ve enerji yönetimi (CPU frequency scaling) gibi optimizasyonlar getirir. yum update kernel ya da apt-get dist-upgrade komutlarıyla en son sürümü kurmak, performans artışı sağlayabilir.

Güvenlik açısından, bir saldırı vektörü CPU tüketimini artırabilir; örneğin bir “slowloris” saldırısı, çok sayıda yarı açık bağlantı oluşturarak iş parçacıklarını meşgul eder. Böyle bir durumda, SLA hizmeti kapsamında DDoS koruması ve WAF kuralları güncellenmelidir. Üreticinin güvenlik bültenlerini düzenli takip etmek, kritik yamaları kaçırmamanızı sağlar.

Adım 6: Performans Testi ve Yük Testi ile Doğrulama

Teşhis adımlarını tamamladıktan sonra, sorunun çözüldüğünü doğrulamak için ApacheBench (ab) ya da wrk gibi yük test araçları kullanılabilir. Örneğin, ab -n 1000 -c 100 http://example.com/ komutu, 100 eşzamanlı istekle 1000 toplam istek göndererek CPU tepkisini ölçer.

Test sonuçları, ortalama yanıt süresi (ms) ve %95 yanıt süresi gibi metriklerle birlikte CPU kullanım grafiği sunar. Eğer test sonrası CPU %30’un altına düştüyse, yapılan optimizasyonların etkili olduğu kanıtlanmış olur. Aksi takdirde, yeniden adım 2‑5 arasında geri dönerek ince ayar yapılmalıdır.

Avantaj ve Dezavantaj Karşılaştırma Tablosu

YöntemAvantajDezavantaj
İzleme Araçları (top/htop)Gerçek zamanlı, kurulum gerektirmezSadece anlık veri, uzun vadeli trend göstermez
Prometheus + GrafanaUzun vadeli veri, görsel raporlarKurulum ve bakım süresi
Log AnaliziHata kaynaklarını doğrudan gösterirLog büyüklüğü arttıkça analiz zorlaşır
Konfigürasyon OptimizasyonuKaynak verimliliği artırırYanlış ayar sistem çökmesine yol açabilir
Yazılım GüncellemeleriGüvenlik ve performans iyileştirmeleriUygulama uyumsuzlukları riski

Sıkça Sorulan Sorular

CPU %100’e ulaştığında sunucu tamamen çökebilir mi?

Evet. CPU sürekli %100’de çalışırsa, yeni gelen istekler kuyruğa alınır ve işlem süresi uzar. Bu durum, özellikle zaman kritik uygulamalarda hizmet kesintisine yol açar. Çözüm, yüksek CPU tüketen süreçleri tespit edip optimize etmek ya da ek işlemci kaynağı eklemektir.

Docker konteynerları CPU kullanımını artırır mı?

Docker, kaynakları izole eder ancak konteyner içinde çalışan uygulama aynı fiziksel CPU’yu paylaşır. Yanlış cgroup limiti belirlenirse, bir konteyner CPU’yu aşırı tüketebilir ve host üzerinde performans düşüşüne neden olur. docker stats komutu ile her konteynerin CPU oranı izlenebilir.

CPU throttling (hız sınırlaması) sorunu nasıl anlaşılır?

Linux’taki cpufreq aracını cpupower frequency-info komutuyla kontrol edin. “hardware limits” ya da “CPU scaling governor” “powersave” olarak ayarlıysa, CPU performansı sınırlanmış olabilir. Bu durumda “performance” moduna geçmek, CPU frekansını artırır.

CPU kullanımını izlerken hangi metrikler daha önemlidir?

Toplam CPU yüzde kullanımı (%CPU), çekirdek bazlı kullanım (%CPU per core), load average (1, 5, 15 dk) ve “iowait” (CPU’nun I/O bekleme süresi) en kritik metriklerdir. Load average, CPU çekirdek sayısına göre değerlendirilmelidir; örneğin 8 çekirdekli bir sunucuda load average 8’in üzeri sorun işaret eder.

Sonuç: Yüksek CPU Kullanımını Hızlı ve Etkili Şekilde Çözmek İçin İzlenecek Yol Haritası

Yüksek CPU kullanımını sadece bir gösterge olarak görmek yerine, sisteminizin bir alarm sinyali olarak değerlendirin. Bu makalede önerilen 6 adımlı yol haritasını takip ederek sorunu tanımlayabilir, kök nedenini ortadan kaldırabilir ve tekrarını önleyebilirsiniz. Unutmayın, düzenli izleme, doğru konfigürasyon ve güncel yazılım, CPU performansının sürdürülebilirliği için temel taşlardır.

Eğer mevcut altyapınızda sık sık CPU darboğazları yaşıyorsanız, Intel i9 VDS sunucular gibi daha yüksek çekirdek sayısına sahip bir çözüm değerlendirebilir ya da colocation hizmeti ile donanımınızı özelleştirerek performansınızı artırabilirsiniz. Ancak önce mevcut sisteminizi iyileştirmek, gereksiz maliyetlerden kaçınmanızı sağlar.