Ubuntu Sunucuda Yüksek CPU Kullanımı Nasıl Düşürülür?

Web siteniz yavaşlıyor, yönetim paneli geç açılıyor veya sunucunuz komutlara gecikmeli yanıt veriyorsa işlemci kullanımını kontrol etmek iyi bir başlangıçtır. Ancak CPU’nun yüksek görünmesi, her zaman sunucunun yetersiz olduğu anlamına gelmez. Bir yedekleme işlemi, yoğun veritabanı sorguları veya hatalı çalışan bir uygulama da aynı duruma neden olabilir.

Ubuntu sunucuda yüksek CPU kullanımını düşürmek için önce kaynak tüketen işlemi bulmalı, ardından sorunun nedenine uygun müdahale etmelisiniz. Bu rehberdeki temel komutları Ubuntu 22.04 ve 24.04 üzerinde kullanabilirsiniz.

1. En Fazla CPU Tüketen İşlemi Bulun

SSH üzerinden sunucunuza bağlandıktan sonra aşağıdaki komutu çalıştırın:

top

İşlemleri CPU kullanımına göre sıralamak için Shift + P, her mantıksal işlemcinin kullanımını ayrı görmek için 1 tuşuna basın. Ekrandan çıkmak için q tuşunu kullanabilirsiniz.

Listede şu alanlara dikkat edin:

  • PID: Çalışan işlemin kimlik numarasıdır.
  • %CPU: İşlemin tükettiği işlemci kaynağını gösterir.
  • COMMAND: Kaynak kullanan programın adıdır.

Örneğin mysqld veritabanını, php-fpm PHP uygulamalarını, node ise Node.js ile çalışan bir uygulamayı işaret edebilir.

Bir işlemin %100 CPU kullanması, sunucudaki bütün çekirdeklerin dolu olduğu anlamına gelmez. top aracının yaygın gösteriminde %100 yaklaşık bir mantıksal işlemcinin tamamen kullanılmasıdır. Birden fazla çekirdek kullanan işlemlerde bu değer %100’ü aşabilir.

2. CPU Kullanımı ile Disk Beklemesini Ayırın

Sunucu yavaşladığında sorun her zaman işlemcinin hesaplama kapasitesi değildir. top ekranının üst bölümündeki değerler, hangi kaynağın incelenmesi gerektiğine dair ipucu verir:

Alan

Anlamı

us

Uygulamaların kullandığı CPU süresi

sy

İşletim sistemi çekirdeğinin kullandığı CPU süresi

id

CPU’nun boşta kaldığı süre

wa

Disk gibi giriş/çıkış işlemlerini bekleme süresi

st

Sanal makinenin hipervizör nedeniyle kullanamadığı CPU süresi

Özellikle wa yüksekse disk performansını ve depolama yükünü inceleyin. Sanal sunucuda st değerinin sürekli yüksek olması durumunda ölçüm zamanı ve çıktılarıyla hizmet sağlayıcınıza başvurun. Bu değer tek başına sorunun kesin nedenini göstermez. 

3. Kaynak Tüketen Uygulamayı Düzenleyin

CPU tüketen programı belirledikten sonra çözümü o uygulama üzerinden ilerletin.

MySQL yüksek CPU kullanıyorsa

Yavaş sorguları, eksik indeksleri ve aynı sorgunun gereksiz yere tekrarlanıp tekrarlanmadığını kontrol edin. Örneğin bir rapor ekranının her açılışta tüm sipariş geçmişini taraması, ziyaretçi sayısı düşükken bile işlemciyi yorabilir.

Yavaş sorgu kaydı ve sorgu analiziyle ilgili adımlar için bilgi bankamızdaki “Ubuntu 24.04 MySQL Performans Optimizasyonu Nasıl Yapılır?” başlıklı rehberden yararlanabilirsiniz.

PHP veya WordPress yüksek CPU kullanıyorsa

Sorun başlamadan önce eklenen eklentileri, yapılan güncellemeleri ve trafik değişikliklerini inceleyin. Uygun sayfalarda önbellekleme kullanmak, aynı içeriğin her ziyaretçide yeniden oluşturulmasını azaltabilir.

Sepet, ödeme ve kullanıcı hesabı gibi kişiye özel sayfaları genel sayfa önbelleğine dahil etmeyin. PHP çalışan sayısını artırmak da tek başına çözüm değildir; daha fazla eşzamanlı işlem CPU yükünü artırabilir.

Node.js veya başka bir uygulama yüksek CPU kullanıyorsa

Uygulama günlüklerinde tekrarlayan hataları, sürekli yeniden denenen görevleri ve uzun süren hesaplamaları araştırın. Sorun belirli bir istekle başlıyorsa o işlemi ayrı inceleyin.

4. Yedekleme ve Zamanlanmış Görevleri Kontrol Edin

CPU kullanımı her gün benzer saatlerde yükseliyorsa zamanlanmış işler çakışıyor olabilir. Yedekleme, dosya sıkıştırma ve rapor oluşturma işlemlerinin aynı anda çalışması sunucuyu zorlayabilir.

Mevcut kullanıcının ve root kullanıcısının cron görevlerini görüntüleyin:

crontab -l

sudo crontab -l

Bu komutlar tüm kullanıcıların veya sistemin bütün görevlerini göstermez. Gerektiğinde /etc/crontab ve /etc/cron.d/ altındaki tanımları da inceleyin.

Systemd zamanlayıcılarını listelemek için:

systemctl list-timers --all

Bu liste, zamanlayıcıların son ve sonraki çalışma zamanlarını karşılaştırmanıza yardımcı olur. 

Yoğun görevleri farklı saatlere dağıtın. Örneğin veritabanı yedeğiyle dosya sıkıştırmasını aynı dakikada başlatmak yerine aralarına süre koyun.

5. Arka Plan İşlerinin Önceliğini Düşürün

Tamamlanması acil olmayan bir sıkıştırma veya raporlama işlemi, web uygulamanızla CPU için yarışıyorsa önceliğini düşürebilirsiniz:

sudo renice 10 -p 1234

Buradaki 1234 yerine, önceliğini değiştirmek istediğiniz işlemin PID değerini yazın.

Bu işlem CPU kullanımına sabit bir yüzde sınırı koymaz. Kaynak rekabeti olduğunda daha yüksek öncelikli işlerin öne geçmesine yardımcı olur; arka plan görevinin tamamlanması daha uzun sürebilir. 

Ne işe yaradığını bilmediğiniz işlemleri sonlandırmayın. Özellikle veritabanını zorla kapatmak aktif işlemleri kesebilir. Yeniden başlatma gerekiyorsa önce günlükleri inceleyin ve hizmet kesintisini planlayın.

6. Olağan Dışı Trafiği İnceleyin

Ziyaretçi sayısındaki artışla birlikte CPU yükseliyorsa web sunucusunun erişim günlüklerini kontrol edin. Aynı adrese aralıksız gönderilen istekler, yoğun bot taramaları veya giriş denemeleri uygulamanın daha fazla çalışmasına neden olabilir.

Sorunun kaynağı doğrulandıktan sonra ilgili adreslerde istek sınırlaması, uygun önbellekleme veya WAF kuralları değerlendirilebilir. Kuralları gerçek ziyaretçilerin ve gerekli servislerin erişimini engellemeyecek şekilde uygulayın.

CPU Kullanımı Ne Zaman Normal Kabul Edilir?

Yedekleme, yazılım derleme veya veri işleme sırasında CPU’nun kısa süreliğine yükselmesi normal olabilir. Önemli olan kullanımın ne kadar sürdüğü ve kullanıcıların işlemlerini etkileyip etkilemediğidir.

Değişikliklerden sonra aynı ekranı veya işlemi benzer trafik altında tekrar deneyin. CPU yüzdesinin yanında yanıt süresini, hata sayısını ve tamamlanan iş miktarını da karşılaştırın.

Optimizasyona rağmen işlemci kapasitesi düzenli olarak doluyor ve kullanıcılar bekliyorsa kaynak artırımı değerlendirilebilir. Birden fazla çekirdeğe dağılamayan uygulamalarda çekirdek başına performans, paralel çalışan işlerde ise çekirdek sayısı önem kazanır.

Projenizin işlemci, bellek ve depolama ihtiyacına uygun VDS veya fiziksel sunucu seçeneklerini değerlendirmek için Ekiphost üzerinden bizimle iletişime geçebilirsiniz.

Cette réponse était-elle pertinente? 0 Utilisateurs l'ont trouvée utile (0 Votes)