Upload
load-impact
View
6.892
Download
1
Embed Size (px)
Citation preview
HTTP/1.1 vs HTTP/2
Ragnar Lönn, Load Impact
@ragnarlonn
- a performance analysis
Daniel Stenberg, Mozilla
@bagder
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
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
Site: www.amazon.com
● ~230-240 resources to get to onload()
● ...but “only” ~10 javascript files
● ~10 unique source hosts
● ~7 Mbyte data
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
Test results
Test results
50-70% reduced load time
-66%
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%!
Interesting observations
Relative speed change is flat
Dependencies
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
Dependency chains
index.html
style.css
script1.js
image1.png
image2.png
image3.png
script2.js
image4.png
image5.png
image6.png
image7.png
A dependency chain
index.html
script1.js
script2.js
image6.png
1
2
3
4
Dependency chain load time
Host1/index.html
Host1/script1.js
Host2/script2.js
Host3/image6.png
Conn Req
Req
Conn Req
Conn Req
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
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
Minimum load time
Minimum theoretical load time =
● The largest “sum of all latencies” value of all dependency chains
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
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
Test @ http2.loadimpact.com