WordPress Performance & Scalability
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

WordPress Performance & Scalability

on

  • 8,390 views

 

Statistics

Views

Total Views
8,390
Views on SlideShare
8,371
Embed Views
19

Actions

Likes
5
Downloads
67
Comments
1

1 Embed 19

http://www.slideshare.net 19

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • We'd love your feedback on our new wordpress monitoring and management tool - see inside your app and see what's slow, 2 minutes after installing our agent. If you have Wordpress performance problems, you should try out New Relic -- http://www.newrelic.com - we just released an agent that let's you see inside your wordpress/php app and see what's slow. We'd love your feedback. Check out how we do it: http://blog.newrelic.com/2010/12/16/measuring-wordpress-performance-with-new-relic-rpm/

    It is super easy to setup. Let me know if you think this might be valuable!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

WordPress Performance & Scalability Presentation Transcript

  • 1. WordPress Performance & Scalability Joseph Scott http://josephscott.org/
  • 2. Find Me • http://josephscott.org/ • joseph@josephscott.org • http://twitter.com/josephscott/ • #wordpress-dev
  • 3. Backup First
  • 4. Performance Shelby Supercars Ultimate Aero Twin Turbo
  • 5. Scalability
  • 6. Web Apps Are Like Ogres Onions
  • 7. Start At The Bottom Deal with network problems / bottlenecks first Be familiar with Operating System network optimizations
  • 8. Web Server Apache?
  • 9. Web Server nginx LiteSpeed http://nginx.net/ http://litespeedtech.com/ lighttpd Zeus http://www.lighttpd.net/ http://www.zeus.com/
  • 10. Apache • Can be a pig, remove any modules you aren’t using • Turn off host name lookups • Turn on compression (mod_deflate) • Turn off FollowSymLinks (and .htaccess if you can) • Skip Apache all together, serve static content from another server
  • 11. PHP • Use an opcode cache (APC, lots of others) • Don’t use on static files (unless you really, really need to) • Consider output buffering • Be careful with preg_* functions
  • 12. MySQL - Table Types MyISAM • High performance reads or writes, not both • Full text search InnoDB • Better for mixed reads/writes • Transactions, Foreign Keys
  • 13. MySQL • Double (and triple) check indexes • Tune your configuration • key_buffer_size, table_cache, sort_buffer_size, read_buffer_size • Replication (more on that later) • Interesting quirks, get familiar with them
  • 14. Memcache In memory object cache, learn it, use it, love it With Caution
  • 15. WordPress • MySQL tables default to using MyISAM, consider using InnoDB instead • Turn off unused plugins • Check that themes and plugins aren’t abusing MySQL or PHP • Server static content from another server (optimized for that task)
  • 16. Construction Start from the bottom and work your way up
  • 17. Test Setup • Ubuntu 9.04 server edition • Apache 2.2.11 • PHP 5.2.6 • MySQL 5.0.75 • WordPress -trunk
  • 18. Test “Hardware” Parallels 4.0 2.66 Xeon 1 GB Ram
  • 19. Abusing The Server siege - http://www.joedog.org/index/siege-home siege -d 1 -c 50 -r 10 http://192.168.1.100/
  • 20. Below The Baseline Zero Byte HTML - zero.html (80 r/s) ~0.01 s/r Zero Byte PHP - zero.php (80 r/s) ~0.01 s/r
  • 21. a phpinfo( )’s worth 51,213 / 8,689 bytes static HTML - phpinfo.html 100% (75 r/s) ~0.04 s/r PHP - phpinfo.php 92% (69 r/s) ~0.04 s/r
  • 22. Hello World! 6,582 / 2,531 bytes WordPress: /wp/?p=1
  • 23. Hello World! 6,582 / 2,531 bytes WordPress: /wp/?p=1 8% (6 r/s) ~7 s/r
  • 24. Hello World! + APC WordPress: /wp/?p=1 29% (22 r/s) ~1.51 s/r
  • 25. Use An Opcode Cache! %8 ~7 %29 ~1.51
  • 26. Use An Opcode Cache! %8 ~7 %29 ~1.51
  • 27. WordPress + Memcache • Ryan Boren • Stores WordPress data in Memcache • Reduces the number of database queries • http://ryan.wordpress.com/2005/12/23/ memcached-backend/
  • 28. Hello World! + APC + Memcache WordPress: /wp/?p=1 32% (24 r/s) ~1.4 s/r
  • 29. Batcache!
  • 30. WordPress + Batcache • Andy Skelton • Stores rendered HTML in Memcache • http://wordpress.org/extend/plugins/batcache/
  • 31. Hello World! + APC + Memcache + Batcache WordPress: /wp/?p=1 80% (60 r/s) ~0.4 s/r
  • 32. Hello World! + APC + Memcache + Batcache
  • 33. WordPress + WP Super Cache • Donncha O Caoimh • Stores rendered HTML on disk • http://wordpress.org/extend/plugins/wp-super- cache/
  • 34. Let me 'splain. ... No, there is too much. Let me sum up. Requests Seconds per Description Potential per Second request (mean) Zero Bytes 80 ~0.01 - Static phpinfo() 75 ~0.04 100% phpinfo() 69 ~0.04 92% OOB WP 6 ~7.00 8% WP & APC 22 ~1.51 29% WP & APC/ 24 ~1.40 32% Memcache WP & APC/ 60 ~0.04 80% Memcache/Batcache
  • 35. What Now?
  • 36. All In One Web / Database
  • 37. Moving Out Web Database
  • 38. Paying In Cache Web Memcache Database
  • 39. But Wait, There’s More!
  • 40. MySQL Replication • Master / Slave - one way asynchronous • Send writes to the master, reads to the slave(s) • Replication works on both MyISAM and InnoDB tables • Supports multiple slaves and replication chaining
  • 41. Enter HyperDB • Drop in replacement for the default WordPress database class • Supports distributed reads/writes • Partition data (helpful for large WPMU installs) • Failover support when a database goes down • http://codex.wordpress.org/HyperDB
  • 42. Replicated Data DB Master Web Memcache DB Slave
  • 43. A Balancing Act Load Balancer Web 1 Web 2 Web 3
  • 44. Variations on a Theme • Master / Relay / Slave • Slave just for backups • Multiple data centers • Task specific web servers
  • 45. When Everything Goes Wrong
  • 46. Hire An Amazing SysAdmin
  • 47. Thank You
  • 48. Find Me • http://josephscott.org/ • joseph@josephscott.org • http://twitter.com/josephscott/ • #wordpress-dev