41
Mustafa Uysal @m_uysl blog.uysalmustafa.com #phpkonf WordPress ile Büyük Ölçekli Siteler

WordPress ile buyuk olcekli siteler

Embed Size (px)

Citation preview

Page 1: WordPress ile buyuk olcekli siteler

Mustafa Uysal

@m_uysl blog.uysalmustafa.com

#phpkonf

WordPress ile

Büyük Ölçekli Siteler

Page 2: WordPress ile buyuk olcekli siteler

Ben Kimim?• Yazılım Geliştirici

(Nefis Yemek Tarifleri)

• Kurucu (SKOP)

• WordPress Geliştirici(Plugin | Çeviri | Core)

• Yazar @wpnotlari

Page 3: WordPress ile buyuk olcekli siteler

1 Numaralı CMS

Genel Kullanım: %26,4

CMS: %59,4

Page 4: WordPress ile buyuk olcekli siteler

http://w3techs.com/technologies/details/cm-wordpress/all/all

Page 5: WordPress ile buyuk olcekli siteler

Kimler Kullanıyor

Page 6: WordPress ile buyuk olcekli siteler

Büyük Ölçek

• 12 M+ tekil ziyaretçi (ay) • 500K+ iOS yüklenme • 2M+ Android yüklenme • 6M+ sayfa gösterimi (peak)

• 6M+ app screen view (gün)

Page 7: WordPress ile buyuk olcekli siteler

Büyük Ölçek

• 40+ eklenti • ~2M wp_posts • ~200K Tarif • Toplam 50M Kayıt • 12G+ Veritabanı

Page 8: WordPress ile buyuk olcekli siteler

Nelerle

• Load Balancer (HAProxy + KeepAlived) • Varnish • Web Server (Apache + Nginx) • MySQL (1 Master, 3 Slave)

• Memcached • Elasticsearch • RabbitMQ • MongoDB

http://stackshare.io/nefisyemektarifleri-com/nefisyemektarifleri

Page 9: WordPress ile buyuk olcekli siteler

HAProxy + Keepalived

Page 10: WordPress ile buyuk olcekli siteler

• Giriş yapmamış kullanıcılar • Dogpile etkisi • Çok RAM az CPU

https://github.com/dreamhost/varnish-vcl-collection

https://wordpress.org/plugins/varnish-http-purge

Page 11: WordPress ile buyuk olcekli siteler

Web Sunucuları• Apache • Nginx • Gereksiz modulleri kaldır • mod_php yerine php-fpm kullanın • mpm/php-fpm konfigurasyonu

• StartServers /pm.start_servers • MaxClients /pm.max_children • MinSpareServers /pm.min_spare_servers • MaxSpareServers /pm.max_spare_servers

Page 12: WordPress ile buyuk olcekli siteler

MySQL Sunucuları

• Güncel Sürüm MySQL

•InnoDB kullan • tmpdir icin tmpfs • ince ayar

• query_cache_size • max_connections • innodb_buffer_pool_size • thread_cache_size

Page 13: WordPress ile buyuk olcekli siteler

Elasticsearch

• MySQL’e göre çok hızlı • Gelişmiş Arama • Tavsiye yazılar • Arşiv sayfaları • ElasticPress

• WP_Query => Elasticsearch port

https://github.com/10up/ElasticPress

Page 14: WordPress ile buyuk olcekli siteler

• 300k arama/gün • 2 Server • Gelen: 70mbps • Giden 200mbps

Page 15: WordPress ile buyuk olcekli siteler

RabbitMQ

• ASYNC işler • Mail bildirimleri • Push bildirimleri

• WP-CLI Worker

Page 16: WordPress ile buyuk olcekli siteler

CACHE ALL THE THINGS!

Page 17: WordPress ile buyuk olcekli siteler

Cache

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

Page 18: WordPress ile buyuk olcekli siteler

Cache Tipleri

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

Page 19: WordPress ile buyuk olcekli siteler

Opcode Caching

• APC • XCache • Zend Opcache

•OPcache (php 5.5+)

Page 20: WordPress ile buyuk olcekli siteler

Full Page Caching

• Varnish • Batcache • WP Super Cache • W3 Total Cache • nginx microcaching

Page 21: WordPress ile buyuk olcekli siteler

Object Caching

define('WP_CACHE', true);

Page 22: WordPress ile buyuk olcekli siteler

Object Caching• Redis • Memcached • Transients API

• set_transient • get_transient

• Object Cache API • wp_cache_set • wp_cache_get

https://wordpress.org/plugins/memcached/

https://wordpress.org/plugins/wp-redis/https://wordpress.org/plugins/memcached-redux/

Page 23: WordPress ile buyuk olcekli siteler

Fragment Caching

• Kullanıcıya özel • TTL

https://gist.github.com/markjaquith/2653957

Page 24: WordPress ile buyuk olcekli siteler

CDN

• Datacenter dışındaki cache • 100TB /ay • Minimum hop • Minimum origin request

Page 25: WordPress ile buyuk olcekli siteler

İpuçları

Page 26: WordPress ile buyuk olcekli siteler
Page 27: WordPress ile buyuk olcekli siteler

• Master/Slave • Write/Read • multisite

Page 28: WordPress ile buyuk olcekli siteler

MySQL Operasyonları

• Uzun süren işlemler (5s+) • Mümkünse gece

Page 29: WordPress ile buyuk olcekli siteler

WP-CLI

• Bulk işlemler • Kendi komutlarımızı

yazabiliyoruz • multisite destekler

wp-cli.org

Page 30: WordPress ile buyuk olcekli siteler

• Cache grupları farklı makinelere bölünebilir

Page 31: WordPress ile buyuk olcekli siteler

• Pre-warm caching => Cron • lock mekanizması

Dogpile Etkisi

Page 32: WordPress ile buyuk olcekli siteler

WP_Query Parametreleri

Page 33: WordPress ile buyuk olcekli siteler

• Task Runner (gulp/grunt) • CSS ve JS sıkıştır • CSS ve JS birleştir

• Görsel optimizasyonu • Lazy Load • HTTP 2

HTTP İsteğini Düşür

Page 34: WordPress ile buyuk olcekli siteler

• PHP 5.2.4 bağlayıcı değil • MVC zorlamanın alemi yok • WordPress Code Standardı

PHP Yazarken

https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/

Page 35: WordPress ile buyuk olcekli siteler

Eklentiler 40k+ Eklenti Code review Yüksek trafik için yazılmiyor

Güncellemeler

Core Minor’u bekle Code review, neler değişmiş? Database Upgrade Localde uygula (defalarca)

Page 36: WordPress ile buyuk olcekli siteler

define('WP_DEBUG', true);define('WP_DEBUG_LOG', true);define('SAVEQUERIES', true);

Debug

https://wordpress.org/plugins/query-monitor/

Page 37: WordPress ile buyuk olcekli siteler

Backup

✦ Eklentiler işe yaramaz ✦ RSYNC ✦ Amazon s3 ✦ Periyodik Dump

Page 38: WordPress ile buyuk olcekli siteler

Tavsiye Kaynaklar

✦ https://codex.wordpress.org/High_Traffic_Tips_For_WordPress

✦ https://www.scalewp.io/ ✦ https://10up.github.io/Engineering-

Best-Practices/ ✦ https://vip.wordpress.com/plugins/

Page 39: WordPress ile buyuk olcekli siteler
Page 40: WordPress ile buyuk olcekli siteler

Sorular?

Page 41: WordPress ile buyuk olcekli siteler

Mustafa Uysal

@m_uysl blog.uysalmustafa.com

#phpkonf

Teşekkürler

[email protected]

Bize Ulaşın