Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe...

17
Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore with all Nitrogento optimization features turned on

Transcript of Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe...

Page 1: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

 

 

Benchmark Results  

 

 

  

 

 

 

 

 

Date: 14/03/2011 

Version: 1.0 

Author: Philippe Humeau  

Naming convention 

Demostore  : Basic demostore 

Nitrostore  : a basic demostore with all Nitrogento optimization features turned on 

   

Page 2: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

SOMMAIRE 

 

Test environment ___________________________________________________________ 3 

Test server configuration ________________________________________________________ 3 

Server software setup ___________________________________________________________ 3 

Test box ______________________________________________________________________ 3 

Firebug testing _____________________________________________________________ 4 

Demostore result _______________________________________________________________ 4 

Nitrostore result _______________________________________________________________ 5 

Funkload test ______________________________________________________________ 6 

The scripts ____________________________________________________________________ 6 Homepage test configuration ____________________________________________________________ 6 Full scenario test configuration __________________________________________________________ 6 

Homepage test explanations ______________________________________________________ 7 

Full run scenario explanations ____________________________________________________ 7 

Goals _________________________________________________________________________ 7 

Funkload results ____________________________________________________________ 8 

Homepage ____________________________________________________________________ 8 Homepage delivered per second _________________________________________________________ 8 Homepage loading time (average & max) __________________________________________________ 8 APDEX indices (User experience rating) __________________________________________________ 9 Explanations ________________________________________________________________________ 9 Results _____________________________________________________________________________ 9 Raw data __________________________________________________________________________ 10 

Full scenario _________________________________________________________________ 11 Pages delivered per second ____________________________________________________________ 11 Average & max time to load a page during the complete scenario ______________________________ 11 APDEX indices (User experience rating) _________________________________________________ 12 Explanations _______________________________________________________________________ 12 Results ____________________________________________________________________________ 12 Raw data __________________________________________________________________________ 12 

Yslow / Pagespeed / GTmetrix tests ____________________________________________ 13 

What is it? ___________________________________________________________________ 13 

Basic demostore _______________________________________________________________ 13 

More details on demostore ranking _______________________________________________ 14 Pagespeed notation __________________________________________________________________ 14 Yslow ranking ______________________________________________________________________ 14 

Nitrostore ____________________________________________________________________ 15 

More details on demostore ranking _______________________________________________ 15 Pagespeed notation __________________________________________________________________ 15 Yslow ranking ______________________________________________________________________ 15 What is left in Pagespeed ______________________________________________________________ 15 What is left in Yslow _________________________________________________________________ 16 

Conclusion _______________________________________________________________ 17 

Page 3: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Testenvironment

TestserverconfigurationA virtual machine (Xen) with 4 cores & 4 GB 

CPU: 4 * 5650 (2.67 Ghz) core on a virtual machine 

RAM: DDR3, 4 Go 

 

ServersoftwaresetupKernel: Linux 2.6.32‐5‐xen  

Demostore 1.4.2 

Apache: 2.2.9 

Mysql: 5.0.51a 

APC: 3.0.19 

 

TestboxFunkLoad 1.14.0a‐r54261 

 

Page 4: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Firebugtesting

Demostoreresult 

 

A basic demostore loads in 2,61s on a good browser (Firefox) running on a good station (i7, 6 Go, Windows 7).  

On the first line of Firebug test, the full load weights 570,9 Ko of data and we can see that the core loads in 483 ms.  

The server is “basically” optimized, involving a decent configuration and APC. 

 

Page 5: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Nitrostoreresult

 

The Nitrostore (demostore with Nitrogento installed) core loads in 80ms. Actually it’s a static HTML file that is served instead of the HTML resulting from a 

PHP computation. This is 400 ms less and far less server CPU load since it’s only a static file to serve instead of a PHP run. We can also see the full page loads 

in 1,227s which is due also to the sprite feature, the Etags & expires settings and the minifying if CSS/JS. (The strange looking file names are the compressed 

& minified CSS / JS) 

The whole economy is ~1,4 seconds and 279 Ko.  

 

Time to load the homepage: ‐53%  

Data transferred: ‐47%

Page 6: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Funkloadtest

Thescripts

Homepagetestconfiguration[main] 

title=Demostore Home Hammering 

description=Demostore 1.4.2 homepage 

hammering 

url=http://demostore.nitrogento.com 

 

[test_simple] 

description=Access %(nb_time)s times the main url 

nb_time=1 

 

[credential] 

host=localhost 

port=8007 

 

[monitor] 

hosts=localhost 

 

[localhost] 

port=8008 

description=The benching and benched machine 

 

[ftest] 

log_to = console file 

log_path = simple‐test.log 

result_path = simple‐test.xml 

sleep_time_min = 0 

sleep_time_max = 0 

 

[bench] 

cycles = 10:30:50:70:90:110:130:150:170:190:200 

duration = 60 

startup_delay = 0.01 

sleep_time = 0.01 

cycle_time = 130 

log_to = 

log_path = simple‐bench.log 

result_path = simple‐bench.xml 

sleep_time_min = 0 

sleep_time_max = 0.5 

 

Fullscenariotestconfiguration 

[main] 

title=Demostore Full Hammering 

description=Demostore 1.4.2 Full visit benchmark 

url=http://demostore.nitrogento.com 

 

[test_demostore_test_script] 

description=Access %(nb_time)s times the main url 

nb_time=1 

 

[credential] 

host=localhost 

port=8007 

 

[monitor] 

 

[localhost] 

port=8008 

description=The benching machine 

 

[ftest] 

log_to = console file 

log_path = demostore_test_script‐test.log 

result_path = demostore_test_script‐test.xml 

sleep_time_min = 0 

sleep_time_max = 0 

 

[bench] 

cycles = 10:20:30:40:50 

duration = 200 

startup_delay = 0.01 

sleep_time = 0.01 

cycle_time = 240 

log_to = file 

log_path = demostore_test_script‐bench.log 

result_path = demostore_test_script‐bench.xml 

sleep_time_min = 0 

sleep_time_max = 0.5

Page 7: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Homepagetestexplanations 

The principles are  to  test with 10  simultaneous visitors all  starting  the  same  scenario at  the  same 

time. In time, the different users will succeed to achieve N scenario run. Those scenarios are simple 

fetch, meaning we don’t care to download all static resources; we only load the homepage php/html.  

 

The  second  cycle  then  involves 30 users,  and  then 50,  all  the way up  to 200  simultaneous users. 

Between each cycles, a wait time of 130 seconds is made for the server to return to a “normal state” 

and  load. This  is made  to avoid  cache or  swap  flush, apache daemon  stopping or parasites  in  the 

Bench. 

 

Even if using the most exhaustive list of precautions, a single bench cannot be considered as realistic. 

We did 30 runs to get a reliable statistic result. 

 

The Funkload test scripts & configurations are available to download so you can reproduce the tests 

by yourself (www.nitrogento.com/test_package.tgz) 

 

Fullrunscenarioexplanations 

This test  is made  in the same way as the basic homepage  loading except that the scenario  is more 

complicated and involves a homepage load, a product load, a search engine use, a category load, the 

fact that a user put a product in the cart and then gets back to navigation and checkout. This is a very 

CPU intensive test. 

  

Goals 

The goal  is to test the Full Page Cache (FPC) capability and  limits. Basically, when active, the FPC  is 

serving  static pages  instead of  requiring any kind of PHP  interpretation. This  is  lightning  fast  since 

almost no operation is required to serve a static page. 

 

When the user put something in its cart or if a special dynamic data is present on the page, the FPC 

can’t do  its job and then, the performances get almost back to normal. In the Full run scenario, the 

product add to cart arrive very soon (it’s the 5th operation on 25) so this can be considered the worst 

case scenario. 

 

 

   

Page 8: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Funkloadresults 

Homepage

Homepagedeliveredpersecond

 

Homepageloadingtime(average&max)

 

0

50

100

150

200

250

300

350

0 10 30 50 70 90 110 130 150 170 190 200

Demostore ‐ Pages Served Per Second

Nitrostore ‐ Pages Served Per Second

Successfull Pages Per Second served  (the higher the best)

0

2

4

6

8

10

12

14

16

18

10 30 50 70 90 110 130 150 170 190 200

Demostore worst load time

Demostore average load time

Nitrostore worst load time

Nitrostore average load time

Full scenario average and max load time (the lowest the best)

Page 9: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

APDEXindices(Userexperiencerating) 

 

Explanations 

We can easily see the difference. First, the number of pages served per second reaches 300 with a 

Nitrostore whereas the demostore is delivering a maximum of 20 pages per second. This is a time 15 

factor. On very high  load  (180+  simultaneous users),  the demostore crashed where  the Nitrostore 

was still easily delivering pages. (We could have tested it further to see the limit, but it has not been 

done yet). Next come  the average and maximum  load  time of  the home page. When under heavy 

load  (180, after  it became unstable),  the demostore can  reach up  to 16,5 second and on average, 

homepage  load takes 9 second. The Nitrostore never deliver the home page HTML  in more than 1 

second and on average, under heavy load, 0.375 second. 

Last but not  least, the APDEX  indices of the tests.  It’s recommended  to be always at a better  level 

than 0,9 and never  less than 0,6 since  it’s a really dirty user experience. More can be  found about 

Apdex  here.  We  can  see  that,  during  the  load  test,  the  demostore  is  delivering  a  poor  user 

experience  as  soon  as  40  simultaneous  users  come  in whereas  the Nitrostore  is  still  delivering  a 

perfect (1) Apdex indice, even with 200 simultaneous users. 

Considering the Homepage usually represent 40% of the whole traffic, this is good to get! 

Results

15x more homepage delivered in the same time 

8 time less CPU load 

Homepage HTML delivered 30 times faster (0,375 ms on average instead of 9s under heavy load) 

Continuous top quality user experience rating (especially visible under heavy load) 

 

0

0,2

0,4

0,6

0,8

1

0 10 30 50 70 90 110 130 150 170 190 200Demostore Apdex (user experience) indice

Nitrostore Apdex (user experience) indice

Successfull Pages Per Second served  (the higher the best, < 0,6 : bad experience)

Page 10: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Rawdata

Want to make your own graph or make a measure of yours and compare?  

Here are the raw data: 

Simultaneous users  0  10  30  50  70  90  110  130  150  170  190  200 

SPPS demostore max  0  18  32  49  70  78  75  83  83  83  40  5 

SPPS nitrostore max  0  43  122  195  260  310  320  316  309  323  310  334 

SPPS demostore med  0  4,45  17,30 20,72 21,32 20,17 19,27 20,75 21,08  20,45  10,34 3,80 

SPPS nitrostore med  0  37  109  161  234  285  302  293  292  276  275  271 

Apdex demostore  1  0,878  0,808 0,506 0,5  0,498 0,479 0,269 0,054  0,02  0,01  0,005

Apdex Nitrostore  1  1  1  1  1  1  1  1  1  1  1  1 

loadtime demostore  0  1,822  1,857 2,162 3,031 4,163 4,909 5,861 6,693  7,536  8,6  12 

loadtime nitrostore  0  0,016  0,019 0,050 0,044 0,058 0,104 0,166 0,215  0,282  0,329 0,375

worst time demostore  0  4,1  4,2  4,3  5,1  6,4  7,2  9,102 11,2  12,55  14,2  16,41

worst time nitrostore  0  0,052  0,074 0,135 0,279 0,412 0,45  0,489 0,76  0,813  1,006 1,023

 

   

Page 11: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Fullscenario

Pagesdeliveredpersecond

 

Average&maxtimetoloadapageduringthecompletescenario

0

20

40

60

80

100

120

010

2030

4050Demostore Max Pages served per second

Nitrostore Max Pages served per second

Max Successfull Pages Per Second served  (the higher the best)

0

2

4

6

8

10

12

10 20 30 40 50

Demostore worst load time

Nitrostore worst load time

Demostore average load time

Nitrostore average load time

Full scenario average and max load time (the lowest the best)

Page 12: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

APDEXindices(Userexperiencerating)

 

Explanations 

On the Page served per second, we can see that the Nitrostore  is delivering two times more pages 

than  the Demostore. Obviously, since  the product  is put  in  the cart very early  in  the scenario,  the 

benefits of FPC are quickly cut. 

This is especially true on the APDEX test, only a 20% difference is visible under a 40/50 simultaneous 

user load. It’s still good to take and we are making a lot of work actually on this, we should get 35% 

soon  

The Average and worst load time are also better in the Nitrostore, with also ~20% better timings. 

Results

Two times more pages served. 

20% better on APDEX test and load time  

Rawdata

Want to make your own graph or make a measure of yours and compare?  Here are the raw data: 

Simultaneous users  0  10  20  30  40  50 

SPPS demostore max  0  21  27  31  40  45 

SPPS nitrostore max  0  40  50  65  94  103 

SPPS demostore med  0  11,85  14,065  13,945  14,055  14,06 

SPPS nitrostore med  0  15,57  14,71  14,83  16,08  15,67 

Apdex demostore  1  0,997  0,832  0,698  0,607  0,549 

Apdex Nitrostore  1  0,998  0,837  0,718  0,682  0,634 

loadtime demostore  0  0,627  1,207  1,925  2,606  3,331 

loadtime nitrostore  0  0,29  0,942  1,390  2,103  2,601 

worst time demostore 0  8,502  9,108  9,595  9,608  10,258 

worst time nitrostore  0  5,918  7,058  7,963  8,125  8,331 

0

0,2

0,4

0,6

0,8

1

0 10 20 30 40 50Demostore Apdex (user experience) indiceNitrostore Apdex (user experience) indice

Successfull Pages Per Second served  (the higher the best, < 0,6 : bad experience)

Page 13: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Yslow/Pagespeed/GTmetrixtests

Whatisit? 

Google and Yahoo published some testing plugins for Firefox. The eldest one is Yslow, a quite decent 

all arounder that Yahoo keep maintaining. Google came up with Pagespeed a couple of years later.  

The testing rules are not exactly the same but the overall goal is the same: make the sites load faster, 

optimize navigation and give the world the taste for best practices. 

A very clever company came with the idea that: 

 

1. Not everybody is using Firefox 

2. This can be pretty convenient to be able to test a website from anywhere without having to 

install anything and to be able to compare at once Yslow & Pagespeed results 

 

They  decided  to  create  a  site  called www.GTmetrix.com  that  allows  for  a  full  testing  of  Yslow & 

Pagespeed rule set at once. The only problem  is that this site  is hosted  in US and thus the transfer 

speed and  load time are dependent on the distance between the  location of the tested server and 

GTmetrix servers.  

 

Many  different  points  are  evaluated  in  theses  plugins,  CDN  usage,  CSS  grammar,  browser  cache 

leveraging etc. The plugins then give you a rating for the tested site. We know that Google take load 

speed as a very important ranking factor, it’s very likely that also all other factor are used also to rate 

a site. Ths rating can sometimes change a bit since the rule set are changing. 

Basicdemostore

  

We can see that a Basic demostore is not getting very good ratings. 

 

Page 14: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Moredetailsondemostoreranking

Pagespeednotation

 

Yslowranking

 

Here, only problems are reported. The “good” scores have been stripped off since they don’t help us 

to get better. The items are quite explicit by themselves, so we know where to act. 

 

Page 15: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Nitrostore 

The Nitrogento plugin has been made to address almost all of Yslow & Pagespeed requests since they 

are very legitimate. We did our best to help your site achieve the best possible ranking in those two 

performance benchmark. 

Here is a store with all Nitrogento performances boost enabled & configured: 

In Yslow rule set, you have to declare your CDN (either in Firefox or in the GTmetrix site) if you want it to be 

considered, if not, the ranks should be displayed 94/92%. 

Moredetailsondemostoreranking

Pagespeednotation

 

Yslowranking

 

WhatisleftinPagespeed 

Here we can see that the optimizations that are not 100% are mainly “not doable”. Many points are 

doing very better, the rankings overall is far better. Actually there are two or three optimizations that 

we  intend  to  put  in  the  next  release,  like  “inline  small  CSS”,  “optimize  image”,  “specify  image 

dimensions”.  

Page 16: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

 

The “minify HTML” can be made 100% but  it’s not worth  the CPU cost. This optimization  is either 

100% for minify, either more throughput on the front server. We’ll probably come up with a solution 

but actually, using minify HTML cost a bit of performances. 

Remove unused CSS and choose efficient CSS selector  is something that should not happen  in your 

sites if you develop properly.  

WhatisleftinYslow 

Make fewer “HTTP requests”… Tricky point.  

Either you spread your resources across a  large number of hosts and  leverage browser parallelizing 

download capability (CDN multiple simultaneous GET), but this  imply to have many hostnames (like 

cdn1.nitrostore.com, cdn2.nitrostore.com etc.) but this make more DNS requests. 

Or you use less hosts, thus less DNS resolutions. 

The good way to proceed is to take the amound of static files, divide it by 8 (the average number of 

simultaneous  download  capability  of  the  average  browser)  and  fix  this  amount  of  CDN  name 

pointers. 

For example, if you take a demostore, it has 49 HTTP GET requests, one for the main HTML file and 

then CSS/JS/images = 48.  

Divide this number by 8, this make 6, so the best way to proceed is to have 6 hostname for your CDN 

to optimize resource download. Actually 5 would be the best plus the basic www hostname, making 

6 at all. The problem is, is you make more than 3 in Yslow you get a penalty, if you don’t put all static 

resources on a CDN you get a penalty… 

If you want speed, proceed like said here, if you care about your Yslow ranking, make CDN1/2/3 and 

no more, Nitrogento will automatically spread your resources accordingly. 

“Make fewer HTTP requests”. Once you have your Sprite, you already have divided your requests by 

almost two on a demostore, going down from 49 to 28… It’s possible to do even less request, but by 

design, Nitrogento can’t do more about this. Already 28 requests is not “that much”. 

“Minify JS and CSS”, it’s done but probably the rating is not maximum since we could do more about 

it like stripping all carriage return and stuff like this. This won’t really help a lot but render the code 

unreadable so that’s not really a choice here. 

Finally, “put all JS at bottom”, this  is not always possible and here 1  is  left before bottom, but here 

again, this is a “by design” point, we can’t do better here. 

   

Page 17: Benchmark Results - Nitrogento · Benchmark Results Date: 14/03/2011 Version: 1.0 Author: Philippe Humeau Naming convention Demostore : Basic demostore Nitrostore : a basic demostore

Conclusion 

When looking at this benchmark, we can see that we did our best. Some efforts are still to be made, 

some minor gain could be added but the very big point is already there.  

Nitrogento will make your site way faster, your visitor will get the page at a really increased rate and 

all studies show that a better speed  is directly related to: a better SEO, a more efficient SEM, a far 

more efficient sale process, less cart drop, less users bailing out, more returning users etc.  

There  are  a  lot  of  studies  around  those  points  so  you’ll  easily  find why Nitrogento  can  help  you 

achieve better results with your Magento Website! 

When doing a  large Emailing, the homepage  is the most  loaded page and this one will be far more 

efficient using Nitrogento,  leaving also more  resources  to your  server(s)  to  take  care of  the other 

users going deeper in your site and completing a buy process. 

Your website will perform faster, your server load will be lowered, you will consume less bandwidth 

and all this will  lead to more sales. The figures shown here are based on a demostore but we’ll be 

really  glad  to  hear  about  your  stories  and  gain,  to  see  how Nitrogento  improved  your Magento 

experience and your visitor conversion rate, keep us posted! 

About 

Nitrogento  is  a  Magento  extension  edited  by  NBS  System  on  an  original  idea  from  the  staff, 

specifications and project development process has been handled by NBS System. 

The  Extension  has  been  developed  by  Mathieu  Bouchot  (Academy  E‐commerce)  and  Aymeric 

Aytamer (Agence DnD). 

 

Magento and Magento Inc are trademarks from the Magento Inc. Company. 

This document is free to copy and spread on any support, part can be quoted as long as the sense is 

not altered. No modification can be done without any direct agreement from NBS System. 

© 2011 NBS System, All right reserved. 

 

 

Benchmark  Nitrogento  from  NBS  System  is  made  available  following  the  terms  of  the  Creative 

Commons Paternity – No Modification 3.0 Unported licence.