WordPress Performance & Scalability

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    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

    + josephscottjosephscott, 6 months ago

    custom

    1083 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1083
      • 1083 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 11
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories