14
Scaling Dynamic WordPress Websites WordCamp US Dec. 5th, 2015

Scaling Dynamic WordPress Sites - WordCamp US 2015

Embed Size (px)

Citation preview

Page 1: Scaling Dynamic WordPress Sites - WordCamp US 2015

ScalingDynamic

WordPressWebsites

WordCampUSDec.5th,2015

Page 2: Scaling Dynamic WordPress Sites - WordCamp US 2015

WhoamI?

AaronEdwards

@UglyRobotDev

https://profiles.wordpress.org/uglyrobot

,,andCAMPUSPRESS

• CTOofIncsub

• WordPressdevelopersince2.6,specializinginMultisite

• Creatoroflotsofpluginsandservices

Page 3: Scaling Dynamic WordPress Sites - WordCamp US 2015

Onesizedoesn’tfitall• Mostcachingpluginsandperformancetalks

focusonFullPageCaching

• Doesnothingfordynamicwebsites!

MembershipSites

WordPressMultisite

Page 4: Scaling Dynamic WordPress Sites - WordCamp US 2015

PageGenerationTime(ms)

0 100 200 300 400 500 600

29ms200ms300ms

PHP Database WebExternal

GooglePagespeedrecommends200msmax!

PageGenerationTime

Page 5: Scaling Dynamic WordPress Sites - WordCamp US 2015

DatabaseOptimization• Limitandoptimizequeries

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

• OptimizeMySQLconfig

• Querycache

• MySQLTuner

• Converthigh-writetablestoInnoDB

• SwitchtoMariaDB(10-20%)orAWSAurora(2-3x)

orkeepthequeriesfromevergettingtoyourDB…

Page 6: Scaling Dynamic WordPress Sites - WordCamp US 2015

Disk

Memory

WordPressObjectCache

Page 7: Scaling Dynamic WordPress Sites - WordCamp US 2015

ObjectCachingPlugins

• Memcached-Recommended

• http://wordpress.org/extend/plugins/memcached/orW3TC

• Redis-Recommended

• https://wordpress.org/plugins/redis-cache/

• APC

• https://wordpress.org/plugins/apc/orW3TC

• FileBased-notrecommended

wp-content/object-cache.php

Page 8: Scaling Dynamic WordPress Sites - WordCamp US 2015

PHPOptimization:CodeProfiling

• Beginners:P3(PluginPerformanceProfiler)

• https://wordpress.org/plugins/p3-profiler/

• Advanced:Xdebug+(web/win/k)cachegrind

• EasiestwayistheVVVlocaldevelopment

environment

• OnProduction:

Page 9: Scaling Dynamic WordPress Sites - WordCamp US 2015

PHPOptimization:WorstOffenders1. Unnecessary/unoptimizedqueries

1. Usewp_cache_*functions(objectcacherequired)

2. Per-pageloaddatabasewrites(stats,redirection,logging

plugins)

2. Watchoutforremoterequests!

1. Uselowtimeouts

2. Cacheaslongaspossible,notintransients

3. Flushingrewriterulespoorly

4. Directfilesystemaccess

Page 10: Scaling Dynamic WordPress Sites - WordCamp US 2015

SpeedingUpPHP• UseNGINXinsteadofApache

• InMultisiteuseaCDNorVarnish

• MoveSessionstoragetoRAM

• UpgradePHPto5.5or5.6

• EnableandconfigureOPcache

• Makesurecodebasefitsincachesize:

• opcache.memory_consumption

• opcache.max_accelerated_files

• Increaserevalidationfrequency:

• opcache.revalidate_freq

Page 11: Scaling Dynamic WordPress Sites - WordCamp US 2015

SwitchtoHHVMorPHP7!

http://talks.php.net/fluent15#/wpbench

Page 12: Scaling Dynamic WordPress Sites - WordCamp US 2015

AppMonitoringatScaleStatsD+StatsD

WordPressClient+

Grafana

https://github.com/etsy/statsd

https://wordpress.org/plugins/statsd/

http://grafana.org/

• Liveapplicationprofiling

Page 13: Scaling Dynamic WordPress Sites - WordCamp US 2015

Tootechnicalforyou?• HireanexperiencedSysAdmin

• Useacutting-edgemanagedWordPresshost

Page 14: Scaling Dynamic WordPress Sites - WordCamp US 2015

Thankyou#WCUS!@UglyRobotDev

Drag&dropsitebuilding,100+WordPresspluginsand24/7expertWordPresssupport