slide 2: How to Optimize Magento Hosting
to Increase Online Sales
The Devil is in the Details
slide 3: Introduction
Will Bernstein
Executive Vice President
Sales and Marketing
slide 4: Outline
1. Case study: Zarpo.com solution engineering
2. Load testing results: lab vs. real-world testing
3. Best practices for Magento-optimized development
4. The link between performance and conversion
slide 5: Case Study: Mystery of the Locked DB
• Zarpo.com is the first and largest flash sale travel
website in Latin America
• Based in
o Paulo Brazil
• Zarpo’s objective is to provide the best online user
experience to demanding Latin American travelers
• Running a highly customized deployment of Magento
Enterprise Edition
slide 6: Case Study: Mystery of the Locked DB
Monday January 13 2014 – Catastrophic Event
• 12:37 PM: Critical ticket opened with ZeroLag Support –
“Zarpo is badly down”
• 12:48 PM: Initial trouble analysis complete – MySQL crash
– Extremely high volume of queries locked up the DB
• 1:04 PM: ZeroLag engineer kills queries and restarts SQL –
site back online
• 1:22 PM: Queries continue to pound SQL for reasons
unknown. ZeroLag staff keeps SQL online
slide 7: Case Study: Mystery of the Locked DB
Monday January 13 2014
• 4:27 PM: Root cause deep dive begins
– Team is assembled: DBA and senior Magento / Linux engineers
slide 8: Case Study: Mystery of the Locked DB
Monday January 13 2014
• 5:00 PM: DB diagnostics and configuration analysis begins
• 6:18 PM: Test environment is set up to focus on DB cache
under load
slide 9: Case Study: Mystery of the Locked DB
Tuesday January 14 2014
• 8:15 AM: Root cause identified
– An AJAX call checks a custom cache
– When a travel deal gets sold or updated the cache is cleared
and the next AJAX call kicks off a recache
– If a cache has not been built by the time next AJAX call
happens another cache rebuild gets launched
– Zarpo had recently released its mobile application and usage
increased 800 causing a massive log jam of cache rebuilds
slide 10: Case Study: Mystery of the Locked DB
Tuesday January 14 2014
• 9:18 AM: Solution engineering begins
slide 11: Case Study: Mystery of the Locked DB
Tuesday January 14 2014
• Developer briefing: ZeroLag recommends solution
– Add Ajax code that blocks all rebuilds if a rebuild is already in progress
• The Ajax call puts up a “loading new deals” clock for users during cache rebuilds
• As an added benefit the clock contributes to the user experience by helping build
customer anticipation for deals consistent with the flash sale business model
slide 12: Case Study: Mystery of the Locked DB
Tuesday January 14 2014
Zarpo names the successful solution “The McManus Magic Shield”
slide 13: Case Study: Mystery of the Locked DB
Skype Room Chat Report from Zarpo
1/24/14 9:41:45 AM Alexis Manach: excellent
news
1/24/14 9:41:56 AM Alexis Manach: the
McManus magic shield is on..
1/24/14 9:42:09 AM Alexis Manach: and
working beautifully..
1/24/14 9:42:43 AM Alexis Manach: this
morning i triggered this big event recache with
over 550 concurrent users online and site did
not even move a little bit.
slide 14: About ZeroLag
Get the power of 1:1
• Magento Platinum Hosting Partner
• Founded April 1999
• Founder CEO Greg Strelzoff
• 80 Employees
• We never throw developers
under the bus
slide 15: Load Testing Results
02
Cameron King
Linux Manager
slide 16: Purpose
• To observe Magento performance under varying store
sizes cache configurations and traffic levels
– Directly relates to questions we get asked on a weekly basis
during the pre-sale process
slide 17: Lab and store test setup
• Environment: single load test server
– Tool: Gatling
– Method: Blind test unbiased
– Tiers: Single web DB Dual web DB
– Code: stock Magento EE 1.13 no plugins
• Test grid:
– Cache: Memcached Redis
– Store sizes: 1K 100K 500K products
– Traffic: 100 200 300 400 500 concurrent browsers
• Success rate: 99 to consider valid test
slide 18: Environment Response Time vs. Traffic
www
db
www
db
www
slide 19: At 100 concurrent browsers the “smaller” environment
performed best…
Environment Response Time vs. Traffic
It depends on where the bottlenecks are
• At low levels CPU is not strained
• No benefit of extra CPU power from
two web servers
• 50ms overhead due to shared PHP
sessions Memcached and file
system NFS
slide 20: Cache Response Time vs. Traffic
Redis Memcached
slide 21: Lab Load Test Recap
• Environment sizing is important to performance
• Stock Magento is fast and scalable when deployed with
best practices
• Memcached and Redis have similar performance
profiles when under load
• This establishes a baseline on which we can compare
some real-world sites
slide 22: Real-World Testing
• Selected 5 representative Magento sites
• Tested during off-peak hours
• Abort testing at 1 failure rate
• Generate Gatling install script for each site
• Same testing procedure as Lab tests
slide 23: Client Response Time vs. Traffic
slide 24: Client Response Time vs. Traffic
• Performs worse than the baseline
• Enabled Enterprise Edition Full Page
Cache but not fully utilized
• Replaced stock Magento frontend with
Expression Engine
www www
db
slide 25: Client Response Time vs. Traffic
• Performs better than the baseline
• Enabled a number of custom plugins
• Using Varnish and third-party plugin
www
slide 26: Client Response Time vs. Traffic
• Performs better than the baseline
• Front-end designed for Magento
• Using Enterprise Edition FPC
• Using local HTTP Accelerator
www www
www
db
slide 27: Client Response Time vs. Traffic
• Best scalability of all tested sites
• Most consistent performance
• Front-end designed for Magento
• Using Enterprise Edition FPC
• Using cloud-based HTTP accelerator
www www
db
slide 28: Client Response Time vs. Traffic
slide 29: Client Response Time vs. Traffic
www
db
• Great single-user experience
• Very poor scalability
• A large number of complex plugins
• Significant development issues
• Multiple developers working on the site
• File-based Magento fast cache
• DB-based PHP sessions
• FPC incompatible with plugins/code
• CPU intensive site
slide 30: Real-World Load Test Recap
• Code quality is the single greatest factor in determining
performance of a Magento site
– Frontend
– Plugins
– Custom Code
• FPC HTTP accelerators clustering and in-memory
fast cache are excellent ways to improve scalability
slide 31: Best Practices in
Magento Development
03
Doug Goldberg
Vice President
Magento Solutions
slide 32: Common Bottlenecks
Poorly Optimized Frontend
– Making performance-impacting changes
– Very large images
– Hundreds of very small images
– Uncombined JavaScript/CSS
– JavaScript/CSS out of order
– No browser caching
– Performance-intensive uncached page elements
slide 33: Best Practices
• Reduce the number of HTTP requests limit external requests
– Base install of Magento has 40 calls
– Most Magento sites I have seen: 100+ calls
• Compress files
– JavaScript images HTML CSS etc.
– Images should not be over 50KB
• Minify JS
– Removes unnecessary spaces tabs and other
selected characters
– Reduces overall size of the file
• Combine or merge JS and CSS
slide 34: Best Practices cont.
• Load CSS first JavaScript last
– Page appears to be loaded on the user’s machine while JavaScript is catching
up and loading in the background
• Add expiration headers for static graphic files Browser cache
– 80 of page load time is downloading scripts images and CSS which
normally don’t change very often
• Use CSS sprites
– Can cut page load time by reducing the amount of HTTP requests your page
makes to the server through the consolidation of your CSS background
images
slide 35: Best Practices cont.
• Avoid redirects
– Site loads a header with a blank page then loads
new page
– Increases the time it takes to get the user to the
page they actually want
• Use cache very aggressively
– Including Magento FPC if on Enterprise Edition
• Use CDN
– And even multiple zones for parallel downloads
slide 36: A Glimpse into the Future
04
slide 37: HipHop Virtual Machine
• HipHop for PHP: a series of execution engines
and improvements created by Facebook
– Original motivation: save server resources
given large PHP codebase of facebook.com
– As development progressed: realization that
HipHop could substantially increase the speed
of PHP applications in general
• Current version open-sourced in late 2011
– Known as HHVM HipHop Virtual Machine
slide 38: Case Study – Magento and HHVM
• Car Part Kings
• Wanted to run HHVM and fpm on the
same production site to compare
performance
• How do you do that
– Query parameter strings h1
slide 39: What does that look like
• fpm
– carpartkings.com/mann-cabin-air-filter-cu-2949-2.html
• HHVM
– carpartkings.com/mann-cabin-air-filter-cu-2949-2.htmlh1
slide 40: How did it perform
• fpm page load time 2.16 seconds
• HHVM page load time 1.14 seconds
• On the first day conversion increased by
500 over the similar fpm pages
• Facebook has seen increases in web
page generation throughput by factors of
up to 6x vs. Zend PHP
slide 41: Is HHVM ready for primetime
• Not quite yet
– Car Part Kings ZeroLag and the HHVM consultant got it working
– But it needed to be restarted 4 to 5 times a day
• Currently deactivated
– HHVM consultant working on a solution to eliminate crashes
slide 42: The Link Between
Performance and Conversion
05
Aaron Koch
Vice President
Direct Sales
slide 43: How performance impacts your business
Why is performance critical
Studies show users are more likely to convert on a faster site
− Slow sites subconsciously erode user confidence
− User Experience is everything and there are two components:
• Visible user experience - look and feel of the site along with
information architecture
• Invisible user experience - the passage of time itself
• Front-end innovation combined with back-end performance
optimization delivers the best User Experience possible
slide 44: How performance impacts your business
Magento performance can set your revenue on fire…
slide 45: How performance impacts your business
But slowing down suddenly can cost you dearly
slide 46: How performance impacts your business
• Consciously or not visitors expect pages to load in two
seconds or less
• A one-second delay reduces conversions by 7
• Even seemingly tolerable delays can add up to substantial
lost revenue
– For example a site which sells 100000 per day can lose as much as
2.5 million annually for every extra second of page load delay
• Small changes in site speed can have a huge impact on
e-commerce sales
According to research conducted by Akamai and Gomez Advisors now Compuware
slide 47: Relationship of load time and bounce rate
Lost Opportunity
slide 48: Evaluating your site
Use free tools to analyze your Magento sites
• Knowing is half the battle
WebPagetest webpagetest.org
• TTFB image compression
caching CDN
• Compare web sites’ page load
times
slide 49: Evaluating your site
Use free tools to analyze your Magento sites
• Knowing is half the battle
Gtmetrix gtmetrix.com
• Breakdown 25+ page speed
components
• Provides performance
improvement recommendations
• Also Magento-specific
recommendations
slide 50: Evaluating your site
Use free tools to analyze your Magento sites
• Knowing is half the battle
YSlow yslow.org
• Waterfall chart shows each call
to build the page with
associated load time
• Open Source also available as
browser plugin for Chrome
Firefox more
slide 51: Leave this room with a plan
• Choose a hosting company that you think will best
support your business
• Implement a multi-layered strategy for
optimization and caching
• Communicate with your hosting company
and your solution partner work together
to improve performance
• Remember that your website is a tool not a canvas
slide 52: Thank you
ZeroLag.com | 877-ZERO-LAG