WordPress

ile
Büyük Ölçekli Siteler





Hüseyin Berberoğlu · @hberberoglu
PHP Meetup #11

Ben Kimim?

  • Uygun Teknoloji (2008-2009)
  • Anadolu Sigorta (2010-2014)
  • Nefis Yemek Tarifleri (2007-2014-...)
  • WordPress eklenti geliştirici (2009-....)

https://profiles.wordpress.org/hberberoglu/



First commit


https://plugins.trac.wordpress.org/changeset/96842/wp-favorite-posts

Büyük Ölçek ?


  • 10M+ tekil ziyaretçi (ay)
  • 300K+ iOS yüklenme
  • 1M+ Android yüklenme
  • 6M sayfa gösterimi (gün)
  • 5M app screen view (gün)


 


Büyük Ölçek?


  • 40 aktif eklenti
  • wp_posts 1M+ kayıt
  • wp_users 1M+ kayıt
  • wp_usermeta 16M+ kayıt
  • toplam 33M kayıt
  • 7GB veritabanı


Nelerle?


  • Fiziksel sunucular (dedicated)
    • Load balancer (haproxy)
    • Web server (apache+nginx)
    • Varnish
    • MySQL server (1 master 4 slave)
    • Memcached
    • Elasticsearch


Nasıl?


  • Sunucu Optimizasyon/Konfigurasyonu
    • Web server optimizasyonu
    • MySQL Server optimizasyonu
  • Minimum MySQL isteği
    • Önbellekleme (Caching)
    • CDN Kullanımı
    • Şiir gibi kodlar :)


    Nasıl?


    • Web Server Optimizasyonu
      • SSD kullanın
      • Gereksiz modulleri kaldır
      • mod_php yerine php-fpm kullanın
      • mpm konfigurasyonu 
        • StartServers
        • MaxClients
        • MinSpareServers
        • MaxSpareServers


    Nasıl?


    • MySQL Server Optimizasyonu
      • SSD kullanın
      • Konfigürasyon
        • query_cache_size
        • max_connections
        • table_cache
        • thread_cache_size
      • tmpdir icin tmpfs kullanın
    • MySQL Replikasyon


      Nasıl?


      Minimum MySQL İsteği
      Maksimum performans

       
      • Performans
      • Kullanıcı memnuniyeti
      • Googlebot memnuniyeti
      • Sunucu memnuniyeti
      • Düşük maliyet

      Önbellekleme = 


      Önbellekleme Tipleri


      • Opcode Caching
      • Full Page Caching
      • Object Caching
      • Fragment Caching


      Önbellekleme


      Opcode Caching / PHP Accelerators

      • APC
      • OPcache
      • XCache
      • Zend Opcache


      Önbellekleme


      Full Page Caching / Tam Sayfa Önbellekleme

      • WP Super Cache
      • W3 Total Cache
      • WP Fastest Cache
      • Batcache


      Peki ama hangisi?


      Object Caching?



      set_transient
      get_transient

      wp_cache_set
      wp_cache_get

      WordPress'te object caching desteği var.


      Ama kalıcı değil :(


      Kalıcı hale getirelim...




      Kalıcı Önbellekleme
      (Persistent Object Caching)


      define('WP_CACHE', true);

      • Memcached Object Cache Plugin
      • APC Object Cache Backend Plugin

      Fragment Caching



      Önbellekleme Yaklasımı



      • Ziyaretçiler
        • Tam sayfa önbellekleme
      • Giriş yapmış kullanıcılar
        • Fragment Caching
        • Object Caching



      Özetle


      • WP Super Cache vb.
      • Memcached Object Cache vb.
      • CDN
      • Varnish
      • Parçalı önbellekleme

      Plugin: Query Monitor





      https://codex.wordpress.org/High_Traffic_Tips_For_WordPress




      Teşekkürler

      Hüseyin Berberoğlu · @hberberoglu

      huseyin@nefisyemektarifleri.com







      Öneriler/Sorular?

      PHP Meetup #11

      By Huseyin Berberoglu