Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Yüksek CPU Kullanımına Neden Olan Süreçleri Tespit Etme ve İyileştirme Adımları

codexor

Üye
Katılım
14 Mart 2026
Mesajlar
43
Merhaba arkadaşlar, bugün sizlere sunucularımızda en sık karşılaştığımız problemlerden biri olan yüksek CPU kullanımını nasıl tespit edip, sorunlu süreçleri nasıl iyileştirebileceğimizi adım adım anlatacağım. Özellikle aniden gelen yüklenme (load) artışlarında bu adımları takip etmek, sorunun kaynağını hızla bulmanızı sağlayacaktır.

🔍 İlk Tespit Araçları

Sorunu anlamak için önce durumu gözlemlemeliyiz. Benim en çok güvendiğim birkaç temel araç var. İlk olarak, sunucuya SSH ile bağlandıktan sonra `top` veya daha gelişmiş bir alternatif olan `htop` komutunu çalıştırın.

Bash:
top

Bu komut, CPU'yu en çok hangi süreçlerin (process) tükettiğini gerçek zamanlı olarak gösterir. `%CPU` sütununa dikkat edin. Eğer `htop` kurulu değilse, kurup kullanmanızı şiddetle tavsiye ederim, renkli ve daha interaktif bir arayüz sunuyor.

📊 Detaylı Analiz ve Log İnceleme

`top` ile şüpheli süreci gördükten sonra, onun neden bu kadar CPU yediğini anlamamız lazım. Burada `ps` komutu ve sistem logları devreye giriyor. Örneğin, PID'sini (Process ID) öğrendiğiniz bir sürecin detaylarını görmek için:

Bash:
ps aux | grep [PID_NUMARASI]

Ayrıca, o sürece ait sistem çağrılarını (system calls) ve hataları izlemek için `strace` çok kuvvetli bir araçtır. Ancak bu komut, süreci biraz yavaşlatabilir, canlı sistemlerde dikkatli kullanın.

Bash:
sudo strace -p [PID_NUMARASI] -c

Log tarafında ise, /var/log/syslog veya /var/log/messages dosyalarını, sorunun başladığı zamana denk gelen satırları için inceleyin. `journalctl` komutu da systemd tabanlı sistemlerde işinizi görecektir.

⚙️ Yaygın Nedenler ve İyileştirme Adımları

Yüksek CPU kullanımının birkaç klasik nedeni ve çözüm önerileri şunlar:

1. Kötü Yazılmış Web Uygulaması/Kod: Bir PHP veya Python scripti sonsuz döngüye girmiş olabilir. Web sunucunuzun (Apache/Nginx) error loglarını kontrol edin. Uygulama seviyesinde bir profiler (Xdebug gibi) kullanarak bottleneck'leri bulun.
2. Veritabanı Sorguları: En sık karşılaştığım durum. Yavaş ve optimize edilmemiş SQL sorguları CPU'yu bitirir. MySQL/MariaDB için `slow_query_log`'u aktifleştirin ve /etc/mysql/my.cnf dosyasında ilgili ayarları yapın.
Kod:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
Log dosyasını analiz edip, sorguları indexleyerek veya yeniden yazarak optimize edin.
3. Arka Plan Servisleri (Cron Jobs): Kontrolsüz çalışan cron job'lar CPU'yu tıkayabilir. Tüm cron tanımlarınızı gözden geçirin.
Bash:
crontab -l # Kullanıcı crontab'ını listeler
sudo cat /etc/crontab # Sistem crontab'ını görüntüler
4. Dış Saldırılar (Brute Force, DDoS): Sürekli yeni süreçler (`php-fpm` veya `ssh` çatalları) oluşturuluyorsa saldırı ihtimali var. `fail2ban` kurulu ve aktif olduğundan emin olun. `netstat` veya `ss` komutuyla şüpheli bağlantıları kontrol edin.

⚠️ Kritik Müdahale: Süreç Durdurma ve Limit Koyma

Analiz sonrası sorunlu bulduğunuz ve durdurabileceğiniz bir süreç varsa, önce `kill -15` (SIGTERM) ile nazikçe sonlandırmayı deneyin. Yanıt vermezse, son çare olarak `kill -9` (SIGKILL) kullanın.

Bash:
sudo kill -15 [PID_NUMARASI]
# Birkaç saniye bekle, eğer durmazsa:
sudo kill -9 [PID_NUMARASI]

Uzun vadeli çözüm için, `systemd` ile çalışan servislerinize CPU ve bellek limitleri koyabilirsiniz. Örneğin, /etc/systemd/system/[servis_adi].service.d/limit.conf dosyası oluşturup içine:

INI:
[Service]
CPUQuota=80%
MemoryMax=512M

yazarak, ilgili servisin CPU kullanımını %80 ile, belleği de 512 MB ile sınırlayabilirsiniz. Değişiklik sonrası `sudo systemctl daemon-reload` ve `sudo systemctl restart [servis_adi]` yapmayı unutmayın.

💎 Son Söz ve Tavsiyeler

CPU yükü sorununu çözmek sistematik bir yaklaşım gerektirir: Önce izle (`top`), sonra analiz et (`logs`, `strace`), ardından nedeni bul (kod, db, cron) ve en sonunda iyileştir veya sınırla. Düzenli olarak `monit`, `netdata` veya `prometheus` gibi izleme araçları kurmanız, sorunları daha oluşmadan görmenizi sağlar.

Ben genelde bu akışı takip ediyorum. Peki siz yüksek CPU kullanımı sorunlarıyla karşılaştığınızda hangi yöntemleri izliyorsunuz? Özel bir script veya aracınız var mı? Takıldığınız bir nokta olursa aşağıya yazmaktan çekinmeyin, beraber çözelim.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri