Bu internet sitesinde yer alan tüm bilgiler web hosting hizmetleri konusunda @aktifbilisim personeli, müşterileri ve uğrayan Google gezginlerine yararlı olmak amacıyla hazırlanmıştır.Sunucu veya websiteniz burada anlatıldığı şekilde işlemiyor olabilir.Lütfen olası sorunlar yaşamamak için destek sistemimizden bilgi alınız.

WordPress CPU Optimizasyonu

wordpress-cpuBir önceki yazımda WordPress CPU Kullanımı‘nın neden yüksek olduğunu aktarmıştım.Bu yazımda ise WordPress CPU Optimizasyonu konusunda internette anlatılmamış bazı püf noktaları anlatacağım.

Eğer WordPress sitenizi bir shared hosting hizmetinde barındırıyorsanız maliyet/performans başarısını sağlamak için sitenizi her zaman optimizeli tutmalısınız.

WordPress sitemizde tema kullanımı çok önemlidir.Sırf güzel olduğu için bir tema satın alır sisteme yükleriz.Sitemizde eticaret yapmayacak olsak bile aldığımız temada WooCommerce özelliği varsa gereksizdir.Temadan bu fonksiyonları çıkarmamız gerekir aksi halde gereksiz kod kümeleri de sistemimize yüklenmiş olacaktır.

Örneğin temalarınızda TimThumb kullanmayın.TimThumb resimleri PHP ile yeniden boyutlandırmaya yarayan eski bir script.WordPress’in zaten uzun süredir thumbnail desteği var.Resim istekleri sunucuya statik dosya isteği olarak gelmelidir.

Bir temada TimThumb kullandığınız zaman bir kategori sayfasında 50 adet resim var diyelim.Bu sayfayı bir defa görüntülediğinizde bu isteğiniz 50 adet PHP sorgusu çalıştıracak anlamına geliyor.TimThumb’in cache desteği var evet ama sonuçta o sayfada PHP sorguları dönmüş olacaktır.

Dolayısıyla eğer hosting bütçemiz oldukça düşükse tema seçimi ve tema cpu optimizasyonu konusunda oldukça bilinçli düşünmemiz gerek.

Wordpress Optimizasyon

  1. Eklenti seçimlerinizi yine sunucu kaynaklarını sömürmeyecek türden yapmalısınız.Aşağıda bazı gereksiz eklentilere örnek veriyorum.
  2. Sayaç - İstatistik - Slider - Online User vb. -

  3. Aktif olmayan eklenti ve temalar düşündüğünüz kadar masum değiller.Bunları dizinden kaldırmalısınız.
  4. Giriş formunuza yapılacak otomatik brute force atakları devasa wp-login.php isteklerine neden olabilir.Kurtulmak için bu formlarda Chapta kullanmanızı öneririm.Yine yorumlar için de chapta kullanmanızı mümkünse Disqus kullanmanızı öneririm.
  5. The Heartbeat API’yi dizginlemelisiniz.Wordpress’in bu güzel özelliği oturum açan kullanıcı browserı ile sunucu arasında düzenli iletişimi sağlar.Browser’dan giden bu çağrılar sunucuya “wp-admin/admin-ajax.php” isteği olarak ulaşır ve ciddi bir cpu tüketine neden olur.Hosting bütçesi düşükse bana göre bu özelliği kullanmak çok gereksiz olacaktır.

    Heartbeat API’yi Heartbeat Control adlı eklentiyle hangi alanlarda kaç saniye süreyle çalışacağını belirleyerek ciddi bir CPU tasarrufu sağlayabilirsiniz.

  6. Botlar yada kötü niyetli kişiler xmlrpc.php ve wp-cron.php dosyalarımıza aşırı istek gönderiyor olabilir.Bu olasılığa karşı htaccess üzerinden bu dosyalara dışarıdan erişimi yasaklayın.
  7. <files wp-cron.php>
    order allow,deny
    deny from all
    </files>
    <files xmlrpc.php>
    order allow,deny
    deny from all
    </files>

  8. wp-config.php ayar dosyanızın başına aşağıdaki kodları ekleyin.
  9. // Auto repair your sql ...
    define('WP_ALLOW_REPAIR', true);
    // Disable auto cron runs ...
    define('DISABLE_WP_CRON', true);
    // Disable update checks ...
    define('AUTOMATIC_UPDATER_DISABLED', true);
    define('WP_AUTO_UPDATE_CORE', false);
    // Enable WP cache on your blog ...
    define('WP_CACHE', true);
    // Disable file edit for security ...
    define('DISALLOW_FILE_EDIT', true);

    * kodların açıklamalarını da ekledim.

Tema Optimizasyonu

  1. Otomatik güncellemeler ve otomatik cron çalıştırmayı kapatın.
  2. WordPress’in RSS yayınına ve tema kaynak koduna eklediği sürüm bilgilerini, statik dosyalara eklediği versiyon sorgularını da kaldırın.
  3. Emojileri iptal edin.
  4. XMLRPC uzaktan yönetim protokolünü de iptal edin.
  5. Tüm bu işleri tema fonksiyon dosyanızın başına aşağıdaki kodları ekleyerek yapabilirsiniz.
  6. // Remove all WordPress update checks ...
    function remove_core_updates(){ global $wp_version;return(object) array('last_checked'=> time(),'version_checked'=> $wp_version,); }
    add_filter('pre_site_transient_update_core','remove_core_updates');
    add_filter('pre_site_transient_update_plugins','remove_core_updates');
    add_filter('pre_site_transient_update_themes','remove_core_updates');
    add_filter('automatic_updater_disabled', '__return_true');
    add_filter('auto_update_core', '__return_false');
    // Remove the WordPress version i.e. - WordPress 2.8.4
    remove_action( 'wp_head', 'wp_generator');
    // Remove generator name and version from your Website pages and from the RSS feed.
    function completely_remove_wp_version() { return ''; }
    add_filter('the_generator', 'completely_remove_wp_version');
    // Remove css and js versions details ...
    function remove_cssjs_ver( $src ) { if( strpos( $src, '?ver=' ) ) $src = remove_query_arg('ver', $src); return $src; }
    add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 );
    add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 );
    // Hide login errors wp-login.php ...
    add_filter('login_errors', create_function('$a', "return null;"));
    // Remove relase details on your blog ...
    remove_action('wp_head', 'wlwmanifest_link');
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wp_shortlink_wp_head');
    // Remove WordPress Emoji ...
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('wp_print_styles', 'print_emoji_styles');
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('admin_print_styles', 'print_emoji_styles');
    // Disable XMLRPC ...
    add_filter( 'xmlrpc_enabled', '__return_false' );

    * kodların açıklamalarını da ekledim.

Veritabanı Optimizasyonu

Ayar Tablosunu Kontrol Edin

WordPress’in ayarlarının saklandığı wp_options tablosunda sistemsel veriler saklanır.Her sayfada bu tablo okunur.Ayar tablosunun 5MB olduğunu düşünün..Her sorguda bu tablo çağırılacağından mysql-apache sunucunuza gereksiz yük bindirecektir.

Wp_Options ayar tablosu normalde 500KB civarıdır.Ancak kalıcı-geçici değişkenler, veriler bu alanı bir tür tmp olarak kullanır.Bunun en iyi örneğini wp_options tablosunda saklanan CRON loglarını incelediğimizde görmekteyiz.

Eğer tablonuz 1MB’tan büyükse muhtemelen cron logları burada çok aşırı şekilde büyümüştür.

wp_options sql tablosundaki CRON logları…

Veritabanı Motoru

Hosting sunucularında genelde iki farklı Mysql moturu vardır.Bunlar MyIsam ve InnoDB’dir.Wordpress kurulurken InnoDB olarak kuruluyor ancak bu motor veritabanınız 1GB gibi büyük değilse gereksizdir.Büyük veritabanları için InnoDB daha güvenlidir ancak MyISAM kadar performanslı çalışmıyor.

PhpMyadmin aracılığı ile veritabanınızın yedeğini aldıktan sonra tabloları kontrollü şekilde MyISAM ‘a convert ediniz.

ALTER TABLE wp_tablo_adi ENGINE = MyISAM;

Veritabanını Küçültün

WP-Optimize eklentisi ile veritabanınızda gereksiz içerikleri temizleyebilirsiniz.

Ek Çözümer

Cache Sistemi Kullanın

Bildiğiniz Cache eklentileridir.Wordpress için bilinen cache uygulamalarını kullanırken dikkat etmek gerekir.Sitenize en uygun cache sistemini tercih etmelisiniz.Aksi halde dosya sisteminde kara delik açabilir yada CPU kullanımını düşürmek isterken çıkarabilirsiniz.

Shared hosting hizmetinde barınan bir WordPress site için minimal cache eklentileri daha uygundur.Benim favorim bunlardan Fastest Cache‘tir.

Özel WordPress Cache Yazılımı
1456615655_data_recoveryYüksek CPU kullanımı ve yavaş çalışan sitelerinize kesin çözüm.Bilinen WordPress cache pluginlerinin aksine yazılım WordPress’e entegre edilir.Böylece diğer cache pluginleri gibi çalışırken sitenizde ek sorgular yapmadan ve dosya sistemi üzerinden kara delik oluşturmadan en başarılı cachelemeyi yapar.
SİPARİŞ

CDN Kullanın

Statik dosyalar sunucu taraflı yorumlanması gerekmeyen resim, css, js gibi dosyalarınızdır.Bu elementler için bir CDN hizmeti kullanmak sayfalarınıza gelecek istekleri oldukça azaltacaktır.Statik dosya trafiği CDN hizmeti üzerinden döneceği için sunucuya gelen istekler azalacağından hissedilir bir CPU tasarrufu sağlayacaktır.

CDN hizmetleri aylık belli bir ücretle temin edebileceğiniz servislerdir.Ancak CloudFlare bunu yıllardır ücretsiz olarak hizmetinize sunuyor.Yakında CloudFlare + WordPress CDN entegrasyonu hakkında bir anlatım daha yayınlayacağım.

SİPARİŞ Buradaki işlemleri sitenize uygulayacak zamanınız yoksa üzülmeyin.Destek sistemimizden tek seferlik düşük bir ücretle WordPress CPU Optimizasyonu konusunda yardım alabilirsiniz.

6 Responses to “WordPress CPU Optimizasyonu”

  1. Bilgehan Zeki ÖZAYTAÇ · Cevapla

    Başarılı bir makale. Teşekkürler.

  2. ilkay · Cevapla

    merhaba, Cache eklentisi ve cdn var, resimler optimize, veritabani optimize ( en azindan Wp-optimize eklentisi ile) clean option ile eklenti artiklari da temizlendi. Ancak sunucu yanit suresinde sorun yasiyorum. Sorun ne olabilir.

    • Merhaba İlkay Bey,

      Projenizin güvenliği için site adresinizi yorum metninden kaldırdım.WP Rocket cache plugini ile oluşturulan statik (html) sayfalarınızın sunucu yanıt süresi oldukça iyi görünüyor.Sanırım sunucu yanıt süresi derken dinamik sayfalarınızın yanıt süresini kastediyorsunuz.

      İncelediğime göre sitenizde full ssl kullanıyorsunuz.
      Acaba wp_options (ayar tablosu) ne kadar büyük ?
      Hiç 500 Internal Server Error hatası alıyor musunuz ?
      Siteniz nasıl bir hosting platformunda ?

      Tüm bu sıkıntılar gözünüzden kaçan bir eklenti, temanızda dönen bir fonksiyon, hosting hizmetiniz, Apache limitleri, gibi bir çok etkene bağlıdır.Websiteniz için sunucuda ayrılmış kaynakları script kaynaklı bir fonksiyon sömürüyor olabilir yada bulunduğunuz sunucu siteniz için uygun olmayan bir platform olabilir.

      Teşekkürler.

  3. Melih Can Maviş · Cevapla

    Makale için teşekkürler Aşkın Bey. Güzel bir anlatım olmuş ve hepsini dediğiniz gibi uyguladım.

Yorum yapın...

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir