Title: Imagine 2014: The Devil is in the Details How to Optimize Magento Hosting to Increase Online Sales
1(No Transcript)
2How to Optimize Magento Hostingto Increase
Online Sales
The Devil is in the Details
3Introduction
4Outline
- Case study Zarpo.com solution engineering
- Load testing results lab vs. real-world testing
- Best practices for Magento-optimized development
- The link between performance and conversion
5Case Study Mystery of the Locked DB
- Zarpo.com is the first and largest flash sale
travel website in Latin America - Based in Sao Paulo Brazil
- Zarpos objective is to provide the best online
user experience to demanding Latin American
travelers - Running a highly customized deployment of Magento
Enterprise Edition
6Case Study Mystery of the Locked DB
- Monday, January 13, 2014 Catastrophic Event
- 1237 PM Critical ticket opened with ZeroLag
Support Zarpo is badly down - 1248 PM Initial trouble analysis complete
MySQL crash - Extremely high volume of queries locked up the DB
- 104 PM ZeroLag engineer kills queries and
restarts SQL site back online - 122 PM Queries continue to pound SQL for
reasons unknown. ZeroLag staff keeps SQL online
7Case Study Mystery of the Locked DB
- Monday, January 13, 2014
- 427 PM Root cause deep dive begins
- Team is assembled DBA and senior Magento / Linux
engineers
8Case Study Mystery of the Locked DB
- Monday, January 13, 2014
- 500 PM DB diagnostics and configuration
analysis begins - 618 PM Test environment is set up to focus on
DB cache under load
9Case Study Mystery of the Locked DB
- Tuesday, January 14, 2014
- 815 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
10Case Study Mystery of the Locked DB
- Tuesday, January 14, 2014
- 918 AM Solution engineering begins
11Case 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
12Case Study Mystery of the Locked DB
- Tuesday, January 14, 2014
- Zarpo names the successful solution The McManus
Magic Shield
13Case Study Mystery of the Locked DB
- Skype Room Chat Report from Zarpo
1/24/14, 94145 AM Alexis Manach excellent
news 1/24/14, 94156 AM Alexis Manach the
McManus magic shield is on.. 1/24/14, 94209
AM Alexis Manach and working beautifully..
1/24/14, 94243 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.
14About ZeroLag
- Magento Platinum Hosting Partner
- Founded April 1999
- Founder, CEO Greg Strelzoff
- 80 Employees
- We never throw developers under the bus!
15Load Testing Results
16Purpose
- 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
17Lab 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
18Environment Response Time vs. Traffic
19Environment Response Time vs. Traffic
- At 100 concurrent browsers, the smaller
environment performed best
- 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)
20Cache Response Time vs. Traffic
Redis
Memcached
21Lab 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
22Real-World Testing
- Selected 5 representative Magento sites
- Tested during off-peak hours
- Abort testing at gt1 failure rate
- Generate Gatling install script for each site
- Same testing procedure as Lab tests
23Client Response Time vs. Traffic
24Client 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
25Client Response Time vs. Traffic
- Performs better than the baseline
- Enabled a number of custom plugins
- Using Varnish and third-party plugin
www
26Client Response Time vs. Traffic
- Performs better than the baseline
- Front-end designed for Magento
- Using Enterprise Edition FPC
- Using local HTTP Accelerator
27Client 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
28Client Response Time vs. Traffic
29Client Response Time vs. Traffic
- 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
30Real-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
31Best Practices inMagento Development
32Common 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
33Best Practices
- Reduce the number of HTTP requests, limit
external requests - Base install of Magento has lt 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
34Best Practices, cont.
- Load CSS first, JavaScript last
- Page appears to be loaded on the users 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 dont 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
35Best 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
36A Glimpse into the Future
37HipHop 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)
38Case 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)
39What does that look like?
- fpm
- carpartkings.com/mann-cabin-air-filter-cu-2949-2.h
tml - HHVM
- carpartkings.com/mann-cabin-air-filter-cu-2949-2.h
tml?h1
40How 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
41Is 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
42The Link BetweenPerformance and Conversion
43How 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
44How performance impacts your business
- Magento performance can set your revenue on fire
45How performance impacts your business
- But slowing down suddenly can cost you dearly!
46How 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 100,000 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)
47Relationship of load time and bounce rate
Lost Opportunity
48Evaluating 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
49Evaluating 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
50Evaluating 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
51Leave 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
52Thank you!
ZeroLag.com 877-ZERO-LAG