
WordPress admin-ajax.php CPU Tüketim Sorunu Çözümü. Merhaba değerli dostlar, Bu yazıda Dünyanın en çok kullanılan içerik yönetim sistemi WordPress’de Yüksek miktarda CPU ve RAM kullanımı sorununa çözüm sağlayacağız.
Sunucunuzda yada hosting panelinizde kaynak tüketimine baktığınızda admin-ajax.php içeren bazı url’lerin çok fazla kaynak tükettiğini görebilirsiniz. Buna sebep olan şey ise WordPress Heartbeat API dir.
Başlıklar
WordPress Heartbeat API Nedir?
WordPress 3.6 sürümü ile beraber gelen Heartbeat API, WordPress’in web tarayıcısı ile sunucu arasında iletişim kurmasını sağlar. Geliştirilmiş kullanıcı oturum yönetimi, revizyon izleme ve otomatik tasarruf sağlar. Örneğin Heartbeat API’nin önemli görevlerinden biri de; Yazı yazarken belli aralıklarla yedeklemesi ve bağlantı sorunlarında yazdığınız yazıyı daha yayınlanmadan kaybolmasını önlemek.
WordPress Heartbeat API, AJAX çağrılarını web tarayıcıdan çalıştırmak için /wp-admin/admin-ajax.php kullanır. Teorik olarak kulağa hoş gelse de, WordPress gösterge tablosunda neler olduğunu takip edebiliyor. Bununla birlikte, bu, admin-ajax.php’e yüksek CPU kullanımına neden olan aşırı taleplerin gönderilmesine neden olabilir. Heartbeat API’sini kullanarak bir sayfada bir web tarayıcısı açık bırakıldığında, bu durum potansiyel olarak bir sorun olabilir.
admin-ajax.php CPU Tüketim Sorunu Çözümü:
Heartbeat API’yi tamamen kapatmayacağız ya da admin-ajax.php’yi devredışı bırakmayacağız. Çünkü bunlar wordpress’in önemli işlevlerini içerir. Çözüm olarak Heartbeat API’nin çok sık çalışmasını engelleyeceğiz. Yani her saniye kontrolü yerine, 60 saniyede bir işlem yapmasını sağlayacağız. Bunun için sizlere iki çözüm yolu vereceğiz, eklentisiz ve eklenti yardımı ile…
Heartbeat API Eklentisiz Çözüm:
WordPress’de çok fazla eklenti kullanılması taraftarı değilim. Ne kadar eklenti o kadar kaynak tüketimi ve açık riski demektir. Onun için bunu kod olarak da sizlere sunacağız. Aşağıda verdiğimiz kod ile Heartbeat API’yi sadece Post revision özelliğinde kullanılmasına izin vereceğiz.
- WordPress temanızın function.php dosyasını bilgisayara indirin. function.php dosyası Uzak-Dizininiz/wp-content/themes/tema-adı/function.php konumunda bulunur.
- function.php dosyasını Bir not defteri ile açın.
- Aşağıdaki kodları kopyalayıp, function.php dosyanızda en aşağısına kopyalayın.12345678add_action( 'init', 'my_deregister_heartbeat', 1 );function my_deregister_heartbeat() {global $pagenow;if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow )wp_deregister_script('heartbeat');}
- Dosyada yaptığınız değişiklikleri kaydedin ve dosyayı tekrar sunucunuza, ait olduğu yere atın.
Heartbeat Control Eklentisi ile Çözüm:
Heartbeat Control eklentisi ile Heartbeat API’yi çok sık çalışmasını engelleyeceğiz ve Sadece Yazı ekleme düzenleme aşamasında çalışmasına izin vereceğiz. Bu özelliğin 60 saniyede bir çalışmasını sağlayacağız. Böylece aşırı kaynak tüketmesine de engel olacağız.
- WordPress Yönetim panelinize giriş yapın. Eklentiler > Yeni Ekle kısmına gidin.
- Eklenti arama kutusuna “Heartbeat Control” yazın. Çıkan sonuçlarda Heartbeat Control eklentisini Hemen yükle ve ardından etkinleşir deyin.
- Daha sonra WordPress Yönetim panelinde Araçlar > Heartbeat Control yolunu talip ederek eklentinin ayarlarına gidin.
- Control hearbeat locations: kısmını Allow only on post edit pages olarak ayarlayın.
- Override hearbeat frequency: kısmını da 60 seconds olarak ayarlayın.
- Son olarak Save Changes deyip ayarları kaydedin.
Kodu yoruma yapıştır yaparmısın
Sizi tam anlayamadım. Kodu kopyalamak için kodun sağ üst köşesinde üç adet araç düğmesi var. Onları kullanarak kodu kopyalayabilirsiniz.