WordPress Sitelerde Aşırı CPU Kullanımı: Nedenleri ve Çözümü

Simple and minimalist image showcasing the word 'ERROR' on a white background.

WordPress’te yüksek CPU kullanımının nedeni çoğu zaman sunucunun yetersizliği değil, aynı işin gereksiz yere tekrar tekrar yapılmasıdır: önbellekten sunulması gereken sayfaların her seferinde yeniden oluşturulması, her ziyarette tetiklenen zamanlanmış görevler, giriş sayfasını zorlayan botlar veya arka planda sürekli sorgu çalıştıran eklentiler. Bu rehberde önce CPU’yu neyin tükettiğini nasıl bulacağınızı, ardından en yaygın nedenlerin çözümlerini anlatıyoruz.

Yüksek CPU Kullanımı Sitede Nasıl Belirti Verir?

Paylaşımlı ve WordPress hosting paketlerinde her hesaba belirli bir işlemci kaynağı ayrılır. Siteniz bu limite ulaştığında:

  • Sayfalar belirgin şekilde yavaş açılmaya başlar; yönetim paneli de yavaşlar.
  • Limit aşımı sürerse site geçici olarak erişilemez hale gelebilir.
  • Sorun genellikle trafiğin yoğun olduğu saatlerde veya belirli aralıklarla tekrar eder.

YediNet WordPress Hosting paketlerinde de limit aşıldığında önce yavaşlama, aşım devam ederse erişim sorunu yaşanır. Bu yüzden ara ara açılmayan bir site gördüğünüzde, hata sayfasına bakmadan önce CPU kullanımını kontrol etmek iyi bir başlangıçtır. Sitenin hiç açılmadığı durumlar için web sitesinin açılmama nedenleri rehberimize de bakabilirsiniz.

CPU’yu Neyin Tükettiğini Bulmak

Önbellek eklentisi kurmak veya paketi büyütmek, nedeni bilmeden yapıldığında sorunu yalnızca erteler. Önce kaynağı bulun.

Erişim Loglarını İncelemek

Sunucuya gelen her istek erişim loguna (access log) kaydedilir. DirectAdmin’de istatistik ve log bölümünden alan adınıza ait erişim logunu görüntüleyebilir veya indirebilirsiniz. Logda şu kalıplara bakın:

  • Aynı IP adresinden kısa sürede yüzlerce istek — Bot veya saldırı trafiği.
  • wp-login.php veya xmlrpc.php adresine yoğun POST istekleri — Şifre deneme (brute force) saldırısı.
  • admin-ajax.php adresine sürekli istekler — Heartbeat API veya bir eklentinin arka plan istekleri.
  • wp-cron.php adresinin çok sık çağrılması — WP-Cron’un her ziyarette tetiklenmesi.
  • ?s= içeren çok sayıda istek — Site içi aramayı zorlayan botlar; arama sonuçları önbelleğe alınamadığı için CPU tüketir.
  • Tarayıcı bilgisinde (user agent) bot adı geçen yoğun istekler — SEO tarayıcıları veya yapay zeka botları.

Hangi adresin ve hangi IP’nin öne çıktığını görmek, sorunun yarısını çözmektir.

Query Monitor ile Yavaş Sorguları ve Eklentileri Bulmak

Query Monitor, açtığınız her sayfa için çalışan veritabanı sorgularını, ne kadar sürdüklerini ve hangi eklenti veya temadan geldiklerini gösteren ücretsiz bir geliştirici eklentisidir. Yavaş sayfaları bu eklentiyle açtığınızda, yükün büyük kısmını hangi bileşenin oluşturduğunu doğrudan görebilirsiniz.

Query Monitor’ü teşhis bittikten sonra devre dışı bırakın; sürekli açık kalması gerekmez.

Eklentileri Tek Tek Devre Dışı Bırakmak

Logda belirgin bir bot trafiği yoksa ve sorun belirli bir zamandan sonra başladıysa, büyük olasılıkla bir eklenti veya tema güncellemesi sorumludur. Eklentileri tek tek devre dışı bırakıp CPU kullanımının düştüğü noktayı bulun. Yönetim paneline giremiyorsanız eklenti klasörlerini FTP veya dosya yöneticisiyle yeniden adlandırarak devre dışı bırakabilirsiniz; bu yöntemi WordPress kritik hataları rehberimizde adım adım anlattık.

A circuit board with a glowing ring and floating spheres

Yüksek CPU Kullanımının Yaygın Nedenleri ve Çözümleri

Önbelleğin Devre Dışı Kalması

Önbellek çalışmadığında her ziyaret PHP’nin ve veritabanının baştan çalışması demektir. YediNet WordPress Hosting’de kullanılan LiteSpeed ve LiteSpeed Cache’in çalışma mantığını WordPress sitesi neden yavaş açılır yazımızda anlattık. CPU sorunu açısından kontrol etmeniz gerekenler şunlardır:

  • Önbellek gerçekten devrede mi? Tarayıcınızın geliştirici araçlarında (F12 → Ağ / Network) sayfanın yanıt başlıklarına bakın. LiteSpeed Cache kullanıyorsanız x-litespeed-cache: hit ifadesi sayfanın önbellekten geldiğini gösterir; miss ise sayfanın yeniden oluşturulduğunu.
  • Önbellek çok sık mı temizleniyor? Her yazı kaydında veya her yorumda tüm önbelleği silen ayarlar, önbelleğin faydasını ortadan kaldırır.
  • Önbelleğe alınamayan sayfalar ne kadar yoğun? Sepet, ödeme, üye paneli ve arama sonuçları önbellekten sunulmaz. WooCommerce mağazalarında bu sayfaların yoğunluğu CPU kullanımını doğrudan belirler.

Önbellek türlerini ve doğru temizleme yöntemini cache rehberimizde bulabilirsiniz.

WP-Cron’un Her Ziyarette Çalışması

WordPress, zamanlanmış görevlerini (yayın planlama, güncelleme kontrolleri, eklentilerin periyodik işleri) gerçek bir zamanlayıcıyla değil, sayfa ziyaretleri sırasında kontrol eder. Bu sisteme WP-Cron denir. Trafiği yüksek sitelerde bu kontrol gereksiz yere sık tetiklenir; bazı eklentiler de WP-Cron’a ağır görevler ekler.

Çözüm, WP-Cron’u ziyaretlerden ayırıp sunucunun zamanlayıcısına bağlamaktır. WordPress’in resmî dokümantasyonu bu yöntemi şöyle anlatır:

  1. wp-config.php dosyasına şu satırı ekleyin:define( 'DISABLE_WP_CRON', true );
  2. DirectAdmin’de zamanlanmış görevler bölümünden, örneğin her 15 dakikada bir çalışacak yeni bir cron işi oluşturun:*/15 * * * * wget --delete-after https://alanadiniz.com/wp-cron.php >/dev/null 2>&1

DirectAdmin’de cron işi oluşturma adımlarını cron işleri rehberimizde anlattık. Zamanlanmış yayınlarınız veya e-bülten gibi zamana duyarlı görevleriniz varsa aralığı ihtiyacınıza göre kısaltın.

Hangi görevlerin ne sıklıkla çalıştığını görmek için WP Crontrol eklentisini kullanabilirsiniz. Kaldırdığınız eklentilerden kalan veya dakikada bir çalışacak şekilde ayarlanmış görevler sık rastlanan CPU kaynaklarıdır.

Bot ve Saldırı Trafiği

Ziyaretçi sayınız düşük görünürken CPU kullanımı yüksekse, büyük olasılıkla insan olmayan trafik vardır:

  • wp-login.php şifre denemeleri: Her deneme PHP ve veritabanı çalıştırır. Giriş denemelerini sınırlayan bir eklenti ve iki adımlı doğrulama, bu yükü büyük ölçüde azaltır. Seçenekleri WordPress güvenliği rehberimizde anlattık.
  • xmlrpc.php istekleri: Bu dosya uzaktan yayın yapan eski uygulamalar ve bazı eklentiler (örneğin Jetpack) içindir. Kullanmıyorsanız ana dizindeki .htaccess dosyasına şu bloğu ekleyerek erişimi kapatabilirsiniz:<Files xmlrpc.php>Require all denied</Files>
  • Agresif tarayıcı botlar: Bazı SEO araçlarının ve yapay zeka şirketlerinin botları siteyi çok yoğun tarayabilir. Bu botları robots.txt dosyasıyla sınırlayabilirsiniz; ancak robots.txt bir rica niteliğindedir ve her bot uymaz. Uymayanlar sunucu tarafında engellenmelidir.

Saldırı trafiğini WordPress’e ulaşmadan durdurmak en az kaynak harcayan yöntemdir. Bu katmanı WAF rehberimizde anlattık.

Heartbeat API ve admin-ajax.php İstekleri

WordPress’in Heartbeat API’si, yönetim paneli açıkken tarayıcıdan sunucuya periyodik istekler gönderir. Otomatik kaydetme, yazı kilitleme ve oturum kontrolü bu sayede çalışır. WordPress dokümantasyonuna göre bu istekler 15 ile 120 saniye arasında değişen aralıklarla yapılır.

Tek bir sekme sorun değildir. Ancak birden fazla kişinin gün boyu yönetim panelini açık bırakması veya aynı kişinin onlarca sekme açması, sürekli admin-ajax.php istekleri demektir. Çözüm için:

  • Kullanmadığınız yönetim paneli sekmelerini kapatın.
  • LiteSpeed Cache eklentisinin araçlar bölümündeki Heartbeat ayarlarından, ön yüzde ve panelde bu isteklerin sıklığını azaltabilir veya kapatabilirsiniz. Yazı düzenleyicide otomatik kaydetme için Heartbeat’i tamamen kapatmamanız önerilir.

Bazı eklentiler de ön yüzde admin-ajax.php üzerinden kendi isteklerini gönderir. Erişim logunda bu adres öne çıkıyorsa, Query Monitor ile isteğin hangi eklentiden geldiğine bakın.

Ağır Eklentiler ve Şişmiş Veritabanı

Bazı eklenti türleri yapıları gereği daha fazla CPU kullanır:

  • Her sayfa açılışında istatistik veya ziyaretçi kaydı tutan eklentiler
  • Sitedeki tüm bağlantıları periyodik olarak tarayan kırık bağlantı kontrolcüleri
  • Her yazıda yeniden hesaplama yapan “benzer yazılar” eklentileri
  • Arka planda görsel optimizasyonu veya yedekleme çalıştıran eklentiler

Bu işlevlere ihtiyacınız varsa, işi kendi sunucularında yapan harici servisleri veya düşük trafik saatlerinde çalışacak zamanlamayı tercih edin.

Veritabanı tarafında ise zamanla biriken veriler sorguları yavaşlatır:

  • Yazı revizyonları: Her kayıtta yeni bir revizyon oluşur. wp-config.php dosyasına define( 'WP_POST_REVISIONS', 5 ); ekleyerek yazı başına saklanan revizyon sayısını sınırlayabilirsiniz.
  • Kaldırılan eklentilerden kalan veriler: Eklenti silinse de ayarları ve tabloları veritabanında kalabilir.
  • Süresi dolmuş geçici veriler (transient) ve spam yorumlar.

Veritabanında temizlik yapmadan önce mutlaka yedek alın.

Eski PHP Sürümü

PHP’nin yeni sürümleri, aynı kodu eskilere göre daha verimli çalıştırır. Hosting panelinizden PHP sürümünü güncel ve desteklenen bir sürüme yükseltmek, tek başına CPU yükünü azaltabilir. Yükseltmeden önce tema ve eklentilerinizin yeni sürümle uyumlu olduğunu kontrol edin. PHP ayarlarının nasıl yönetildiğini PHP dosyası ve php.ini rehberimizde anlattık.

Optimizasyon Yetmiyorsa Paket Yükseltmek Gerekir mi?

Yukarıdaki adımlardan sonra CPU kullanımı hâlâ düzenli olarak limite dayanıyorsa, siteniz gerçekten büyümüş olabilir. Bunun işaretleri; önbelleğin çalıştığı, bot trafiğinin engellendiği ve WP-Cron’un düzenlendiği hâlde, gerçek ziyaretçi trafiğinin arttığı saatlerde yavaşlamanın sürmesidir.

YediNet WordPress Hosting paketlerinde işlemci ve bellek kaynakları kademeli olarak artar:

PaketCPURAM
WP-012 Core2 GB
WP-022 Core3 GB
WP-034 Core4 GB
WP-044 Core6 GB

Paketinizi müşteri paneli üzerinden ihtiyacınıza göre değiştirebilirsiniz. Güncel paket özelliklerini WordPress Hosting sayfasında görebilirsiniz.

En üst paket de yetmiyorsa veya sunucu ayarları üzerinde tam kontrol (PHP süreç sayısı, veritabanı belleği gibi) gerekiyorsa, sanal sunucuya (VDS) geçmek daha uygun olur. Hangi VDS paketinin yeteceğini VDS için kaç GB RAM ve kaç çekirdek gerektiğini anlattığımız rehberde hesaplayabilirsiniz.