Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

HTTP/1.1 vs. HTTP/2: A Performance Analysis

9,486 views

Published on

Ragnar Lönn, the founder of Load Impact, presents his study on HTTP/2 performance. This slideshow was presented at Velocity NY, Oct. 13, 2015. Included in this presentation was the unveiling of a free application developers can use to benchmark their website performance on HTTP/1.1 vs HTTP/2 - http://http2.loadimpact.com/

Published in: Technology

HTTP/1.1 vs. HTTP/2: A Performance Analysis

  1. 1. HTTP/1.1 vs HTTP/2 Ragnar Lönn, Load Impact ragnar@loadimpact.com @ragnarlonn - a performance analysis Daniel Stenberg, Mozilla daniel@haxx.se @bagder
  2. 2. Part 2: The Experiment Objective: Try to get a sense of real-world performance impact of going from HTTP/1.1 to HTTP/2 @loadimpact
  3. 3. Approach ● Choose a well-known site ● Download all resources used by main page ● Host everything locally, in controlled environment ● Measure load times while simulating different network characteristics
  4. 4. Site: www.amazon.com ● ~230-240 resources to get to onload() ● ...but “only” ~10 javascript files ● ~10 unique source hosts ● ~7 Mbyte data
  5. 5. MacOS X 10.10.3 (4 CPU cores, 16G RAM) VMware Fusion Linux 3.19.0-25 (Ubuntu) 2 CPU cores, 2G RAM ● Nginx 1.9.5/http2 ● Shimmer Cat 0.1 ● Linux Netem eth0:1 … … ... eth0:n Chrome The Setup
  6. 6. Test results
  7. 7. Test results 50-70% reduced load time -66%
  8. 8. Remember that: ● HTTP/2 implementations still in their infancy ● Sites are optimized for HTTP/1.1 ● Our lab setup is not 100% realistic So who knows… But still, hey - 60%!
  9. 9. Interesting observations Relative speed change is flat
  10. 10. Dependencies
  11. 11. The dependency tree index.html style.css script1.js image1.png image2.png image3.png script2.js image4.png image5.png image6.png image7.png
  12. 12. Dependency chains index.html style.css script1.js image1.png image2.png image3.png script2.js image4.png image5.png image6.png image7.png
  13. 13. A dependency chain index.html script1.js script2.js image6.png 1 2 3 4
  14. 14. Dependency chain load time Host1/index.html Host1/script1.js Host2/script2.js Host3/image6.png Conn Req Req Conn Req Conn Req
  15. 15. The sum of all latencies Host1/index.html Host1/script1.js Host2/script2.js Host1 RTT Host2 RTT Conn Req Conn Req Host3 RTT Host3/image6.png Req Conn Req
  16. 16. The largest sum of all latencies index.html style.css script1.js image1.png image2.png image3.png script2.js image4.png image5.png image6.png image7.png
  17. 17. Minimum load time Minimum theoretical load time = ● The largest “sum of all latencies” value of all dependency chains
  18. 18. Dependency chains ● # of resources loaded in one dependency chain step exceeds # of TCP channels that can be used concurrently HTTP/1.1 is much disadvantaged when: This happens quite often
  19. 19. Dependency chains ● The client needs to open new connections HTTP/2 is disadvantaged when: This happens more often than strictly necessary today, as it often benefits HTTP/1.1 performance
  20. 20. Test @ http2.loadimpact.com

×