Magento server & environment optimization Get very fast page rendering, even under heavy load! E-commerce is also about NBS System 2011, all right reserved Managed Hosting & Security www.nbs-system.com 1
2
3
So many figures to paste here Akamai & Forrester : 5 seconds to load, 20% of people bailing out Shopzilla raised its revenues of ~10% by stepping down from 7s to 2s loadtime Yahoo : +400 ms, 5 to 9% traffic loss and Google : +500 ms, -20% traffic Amazon : +100 ms, -1% sales Interrogated users claims that 2 seconds is fair, 4s is too much 52% of visitors consider speed an essential criteria for returning to a site In 2010, 75% of visitors won t come back if the site is slow (64% in 2006) Speed directly influence your SEO & SEM efficiency 60% of visitors go away if a page load in more than 6 seconds on vid.stream 4
Google is also using speed as an important ranking factor (it s official) Graph (given by Google) show clearly the target: 1.5s More and you are part of the red team called «SLOW» This is not good for your SEO ranking and SEM efficiency Relevance is still more important but Don t you have competitors? 5
6
7
Large features panel & flexibility comes at a price Do it in assembler, it will be fast and you ll become crazy The use of OOP language & framework help to work faster PHP is still an interpreted language (Vs Compiled one) Magento is a kind of meta framework The EAV model gave a lot of flexibility to the catalog but is costly 8
9
APDEX is the key to user oriented benchmarks When you reach a 0,85 APDEX index, your server is loaded but responsive, it s a fair deal E G F 1,00 0,94 0,85 0,70 4 levels for user experience (like your girlfriend, except for the timings) : P 0,50 o o o o Satisfied (for exemple less than a second) Tolerating (from 1 second to 4 seconds) Frustrated (more than 4 seconds) Inacceptable (not served/errors) U 0,00 APDEX = T Satisfied count + Tolerating count 2 Total samples 10
Funkload is Apdex aware It provide reliable tests and cute reporting capabilities Allow you to draft scenarii and inject them Will determine number of C.U (Concurrent User) with a fix Apdex 11
Yslow & Pagespeed are Firefox extensions to check your optims www.gtmetrix.com does it directly through a site (thus 4 all browsers) Reaching more than 90% is not easy, a default demostore, on a default serveur (no optim) scores C/C (76/72%) and takes ~3,1s to load. Those two performance rule set are among the most complete Respecting all rules will grant you a serious SEO & perfs boost 12
Less than 0,9 seconds to (fully) load the homepage 45 ms to get the home and start downloading the static files Grade A/A on Yslow & Pagespeed Deliver massive parallelizing and caching capability Serving up to 200 simultaneous actions (~50 000 Uniq visitor / day) per front web servers with a Community Edition Serving up to 300 simultaneous actions on a Enterprise Edition (FPC) 13
http://fr.fotolia.com/id/7005820 14
Leave some 404 Forget to activate Bloc Caching Badly coded Crons Cold cache effect Load a lot of products/categories on the Home Let the Log database be overcrowded Foreign includes Misconfiguring Magento s cache setting Conception errors (like real time sliders) Hard disk access, nothing worse 15
Integration / Extension Webserver CSS3 Minify Alt httpd Alt Php Etags Expire Sprite SolR Ramdisks Opcode caching Environment Tuning / Settings CDN Memcached Linux tuning Mysql tuning Rproxy Split web/db Magento tuning Apache tuning 16
Small Medium Large Extra Large Mutualized Virtualized 0 to 2000 UV/d Dedicated, Separate W/DB ~30 000 UV/d Dual Datacenter Load balanced ~80 000 UV/d UV/d = Uniq Visitor per Day Dual Datacenter CDN + Cloud for pikes > 100 000 UV/d 17
18
Split front & DB Activate Flat catalog Use Enterprise Edition (full page cache) Activate Mage_optimizer Use SOLR for large catalog Opcode caching system (APC, Zend, Eaccel etc.) Activate caching in back office (and check that code calls it) Minify & compress JS & CSS files (Nitrogento does it) Tweak your apache config (Use Etags, Expire headers, Gzip) 19
Fine tune your Linux Setup Put cache & sessions files on ramdisks Split Front / Back Office instances Use IRQ Balancing Mount disk with noatime option Lower socket Wait Timeout in /proc Add a reverse proxy (Nginx or Varnish for example) CDN get resources from many different CNAMES Truncate (or archive) your log tables in Magento Check foreign includes response times and put them at the end 20
8 resources per servers, 32 resources in one run! 8 resources, then the next 8 resources, etc 21
CSS3 HTML5 Progressive degradation Sprites Deactivate atime Tune up your DB Try Nginx + PHP FPM (warning, no htaccess support) Use DRBD to link two servers (blockdevice across network) Latest Memcached + memcache client => flush the old cache keys 22
People connected Extend to Cloud Hybrid your physical servers with a Cloud will optimize your costs 16000 Visits per hour, Servers are taking blue load, Cloud light blue 14000 12000 10000 8000 6000 4000 2000 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Hour ranges Cloud Architecture 23
This Magento extension provide : Standard & Custom bloc caching (even if not called in code) Automated Sprite generation Gathering & Minifying of your JS / CSS files Gzip / Etags / Expire header configuration Automatically deploy your static files to CDN (& patch themes files) Reduce http requests numbers Learning mode to help 24
On a Demostore with Nitrogento : Homepage load time falls to 0,05s to get the main file Static resources are fetched in one time (reducing DL time, 2 times faster) Your pages make 20 or more less HTTP requests You transfer 20% less content (zipping) Your customer use their browser cache more efficiently Lower pressure on your servers & bandwidth Before After 25
Thank you for your attention! Need (fast) Magento managed hosting? www.nbs-system.com (soon available in English) Telephone : +33.1.58.56.60.86 Mail : phu@nbs-system.com 26