Upload
andrew-kucharski
View
2.449
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Drupal commerce performance profiling by load testing a the kickstarter drupal commerce site on an AWS instance and comparing how the site performa after several well known performance tuning enhancements are applied. We try to compare performance improvements after druapl cache, aggregation, varnish, and nginx reverse proxy. This presentation was first given at Drupal Mid Camp in Chicago. We used loadstorm and new relic to analyze results.
Citation preview
Promet Source MidCamp 2104 Stress testing and optimizing a
Drupal Commerce on a LAMP stack
Objectives• Stress Test Drupal Commerce on a standard server• Make a performance improvement• Measure results & Repeat
• How to look at stress test results• Which improvements made the biggest impact
What You’ll Learn
About Andy
• @AKUCHARSKI• PROMET SOURCE FOUNDER• @PROMETSOURCE
About Promet• Focus on Drupal
•CMS platform•Web applications•Systems integration
• Practice areas•Agile Development (Scrum, Kanban)•DevOps (cook with Chef)•Support (cover 24x7)•Mobile (build native apps)
• Founded in 2003• Global team
•30+ “Prometsters”
What Load Testing is not
http://www.flickr.com/photos/peterlozano
• Front End Performance Testing• High Availability Analysis
Why Load Test•Capacity Planning•Capacity Testing•Performance Tuning
Why care about performance?
Google Blog: 2011 – “We encourage you to start looking at your site’s speed— not only to improve your ranking in search engines, but also to improve everyone’s experience on the Internet. “
• Time = Money… • Speed = Money…• Slower Page load = Less Money
HTML DELAY EXPERIMENT
Determine impact of server delays
GOAL
Delay before sending HTML page Different experiments with different
delays Small % of traffic Monitor negative impact
METHODOLOGY
• LoadStorm.com is a load testing tool for websites• Test scenarios such as login, e-commerce• No scripting language needed• Run large tests up to 500,000 concurrent users• No download, no install, no servers to buy
Waterfall diagrams
•X = Time•Y = Number of objects on page
•Y(1) = HTTP Request – rest of objects are elements of the page, images, CSS and js files, etc, etc.
•Time to load all elements
•DNS Lookup – time it takes for browser to find the server•Initial Connection – three way handshake, hard to control•Time to First Byte – server wait time•Content Download – how long it takes to transfer the data from server to browser
• Back End
• Front End
• Render Start
• Render complete
The Victim – 37 objects on home page
Click icon to add picture
Click icon to add picture
Load Storm Hierarchy
PLAN
SCENARIO
STEPS
Test Plan
Script #1 Activity (User browses anonymously) (11%)1. VUser hits the homepage2. VUser goes to category #13. VUser goes to product #1 in category #14. VUser goes to category #25. VUser goes to product #2 in category #26. VUser goes to category #37. VUser goes to product #3 in category #38. End of session
Script #2 Activity (User browses after logging in) (10%)1. VUser hits the homepage2. VUser logs into an existing customer account3. VUser goes to category #14. VUser goes to product #1 in category #15. VUser goes to category #26. VUser goes to product #2 in category #27. VUser goes to category #38. VUser goes to product #3 in category #39. VUser logs out10. End of session
Test Plan
Script #3 Activity (User abandons a cart, requires login) (68% [2])1. VUser hits homepage2. VUser logs into an existing customer account3. VUser goes to category #14. VUser goes to product #2 in category #15. VUser adds that product to her cart6. VUser removes that product from her cart7. VUser logs out8. End of session
Script #4 Activity (User purchases a product, requires login) (3% [1])1. VUser hits homepage2. VUser logs into an existing customer account3. VUser goes to category #14. VUser goes to product #3 in category #15. VUser adds that product to her cart6. VUser reviews cart7. VUser goes through the checkout process8. VUser receives order confirmation9. VUser logs out10. End of session
Target: AWS Large
Target
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Baseline
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Baseline
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Baseline
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Baseline
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Baseline
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Baseline
Choke Point – around 300 users
• Standard LAMP Stack• Drupal Commerce • Drupal Cache On
Drupal Cache!
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
D.Cache
Choke Point – around 300 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Drupal Cache!
Choke Point – around 300 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Drupal Cache!
Choke Point – around 300 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Drupal Cache!
Choke Point – around 300 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Drupal Cache!
Choke Point – around 350 users
• Standard LAMP Stack• Drupal Commerce • Drupal Cache On + CSS +
JSC Aggregation
D.Cache + Agg
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
D.Cache + Agg
Choke Point – around 350 users
• Standard LAMP Stack• Drupal Commerce • Drupal Cache On + CSS +
JSC Aggregation
D.Cache + Agg
Choke Point – around 350 users
• Standard LAMP Stack• Drupal Commerce • Drupal Cache On + CSS +
JSC Aggregation
D.Cache + Agg
Choke Point – around 360 users
• Standard LAMP Stack• Drupal Commerce • Drupal Cache + Views
Cache
Views Cache
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Views Cache
Choke Point – around 360 users
• Standard LAMP Stack• Drupal Commerce • Drupal Cache + Views
Cache
Views Cache
Choke Point – around 360 users
• Standard LAMP Stack• Drupal Commerce • Drupal Cache + Views
Cache
Views Cache
Choke Point – around 450 users
• Standard LAMP Stack• Drupal Commerce• Drupal caching • Reverse Proxy
Reverse Proxy (nginx)
Choke Point – around 100 users
• Standard LAMP Stack• Drupal Commerce
Kickstart out of the box, no caching turned on
Reverse Proxy
Choke Point – around 450 users
• Standard LAMP Stack• Drupal Commerce• Drupal caching • Reverse Proxy
Reverse Proxy (nginx)
Choke Point – around 450 users
• Standard LAMP Stack• Drupal Commerce• Drupal caching • Reverse Proxy
Reverse Proxy (nginx)
Choke Point – around 450 users
• Standard LAMP Stack• Drupal Commerce• Drupal caching • Reverse Proxy
Reverse Proxy (nginx)
Choke Point – around 450 users
• Standard LAMP Stack• Drupal Commerce• Drupal caching • Reverse Proxy
Reverse Proxy (nginx)
LIVE DEMO
Pt_query_digest
Pt_query_digest
[email protected]+1.773.525.8255@akucharski@prometsource