Joomla! Extreme
Performance
Mitch Pirtle
Joomla!Day New York City
December 4, 2010
Before we begin


Coffee?
Breakfast?
About this presentation

 Performance from all aspects
 How to estimate required needs
 Capacity planning and growth
 Group knowledge sharing, open discussion
About me
About me
Nothing but web since 1995
About me
Nothing but web since 1995
Joomla founder, MongoDB contributor
About me
Nothing but web since 1995
Joomla founder, MongoDB contributor
CTO at Totsy.com
About me
Nothing but web since 1995
Joomla founder, MongoDB contributor
CTO at Totsy.com
Coming Soon: MongoDB for Web Development
About me
Nothing but web since 1995
Joomla founder, MongoDB contributor
CTO at Totsy.com
Coming Soon: MongoDB for Web Development
Coming Soon: Extreme Joomla! Performance
About me
Nothing but web since 1995
Joomla founder, MongoDB contributor
CTO at Totsy.com
Coming Soon: MongoDB for Web Development
Coming Soon: Extreme Joomla! Performance
High-traffic projects (Jetsetter, MTV, Food Networks)
About me
Nothing but web since 1995
Joomla founder, MongoDB contributor
CTO at Totsy.com
Coming Soon: MongoDB for Web Development
Coming Soon: Extreme Joomla! Performance
High-traffic projects (Jetsetter, MTV, Food Networks)
Husband, dad, skate punk, metalcore bassist
Big Joomla Sites I’ve Done
Big Joomla Sites I’ve Done

Quizilla (Viacom/MTV Networks)
Joomla framework, massive dataset and users
Big Joomla Sites I’ve Done

Quizilla (Viacom/MTV Networks)
Joomla framework, massive dataset and users
Food2 (Scripps Publishing/Food Network)
Full CMS stack, tons of integration and rich media
Big Joomla Sites I’ve Done

Quizilla (Viacom/MTV Networks)
Joomla framework, massive dataset and users
Food2 (Scripps Publishing/Food Network)
Full CMS stack, tons of integration and rich media
Jetsetter (Gilt Groupe)
Full CMS stack, all custom extensions
What is performance?
Performance != Scale
Performance:
How fast can the page load?
Performance:
How fast can the page load?

Scale:
How many people can I throw at it?
Aspects of Performance
Aspects of Performance


Server output
Aspects of Performance


Server output
Network throughput
Aspects of Performance


Server output
Network throughput
Browser footprint
Aspects of Scale
Aspects of Scale


Server output
Aspects of Scale


Server output
Network throughput
Aspects of Scale


Server output
Network throughput
Browser footprint
Best Practice - Baseline
Best Practice - Baseline

 Stock install on your systems
Best Practice - Baseline

 Stock install on your systems
 Browser speed test
Best Practice - Baseline

 Stock install on your systems
 Browser speed test
 Distributed load test
Best Practice - Baseline

 Stock install on your systems
 Browser speed test
 Distributed load test
 Monitor server load throughout
Fix: Server Output
Fix: Server Output

 Choose extensions carefully, after testing
 performance baseline
Fix: Server Output

 Choose extensions carefully, after testing
 performance baseline
 PHP opcode cacher - XCache, APC
Fix: Server Output

 Choose extensions carefully, after testing
 performance baseline
 PHP opcode cacher - XCache, APC
 Tune MySQL - query cache
Fix: Server Output

 Choose extensions carefully, after testing
 performance baseline
 PHP opcode cacher - XCache, APC
 Tune MySQL - query cache
 Tune webserver
Fix: Network Throughput
Fix: Network Throughput


gzip text content - HTML, CSS and Javascript
Fix: Network Throughput


gzip text content - HTML, CSS and Javascript
Content Delivery Network (CDN)
Fix: Network Throughput


gzip text content - HTML, CSS and Javascript
Content Delivery Network (CDN)
Minify CSS
Fix: Browser Footprint
Fix: Browser Footprint

 It all starts with the template!
Fix: Browser Footprint

 It all starts with the template!
 Consolidate Javascript and CSS includes
Fix: Browser Footprint

 It all starts with the template!
 Consolidate Javascript and CSS includes
 Limit number of Javascript frameworks
Fix: Browser Footprint

 It all starts with the template!
 Consolidate Javascript and CSS includes
 Limit number of Javascript frameworks
 Remove inline styling, push to CSS
Fix: Scaling Issues
Fix: Scaling Issues

 Dedicated server
 Separate webserver from dataserver
 Multiple webservers/dataservers
 Multiple data centers
What’s a Developer to do?
Developer Checklist

You’re using all the framework classes instead of
crappy, homegrown code right?
Are your extensions really using JCache properly?
Are you running explain plans on your SQL statements
and checking for index and lock contention?
You’re using MySQL’s slow query log, right?
Distributed Systems Issues

Hard to push code updates
Hard to keep data consistent
Hard to debug issues
Additional effort to development
Limits options of existing extensions and services
Tools
Firebug
http://getfirebug.com/
Yahoo! YSlow
http://developer.yahoo.com/yslow/
Selenium
http://seleniumhq.org/
Services
Scout
https://scoutapp.com/
New Relic
http://www.newrelic.com/
Neustar
http://www.neustar.biz/
Reference Materials
MySQL Performance Blog
http://www.mysqlperformanceblog.com/
Time for my favorite game
Stump the Nerd™
Thanks!
Email: spacemonkey@mongodb.org
Twitter: @mitchitized
Web: http://www.spacemonkeylabs.com
Slides: http://www.slideshare.net/
spacemonkeylabs

Joomla Extreme Performance