python-hyper / hyper

HTTP/2 for Python.
http://hyper.rtfd.org/en/latest/
MIT License
1.05k stars 191 forks source link

hyper HTTP2 slower than hyper HTTP1 on top of MPTCP #387

Open deshmukhrajvardhan opened 6 years ago

deshmukhrajvardhan commented 6 years ago

Problem

Using hyper HTTP1 and HTTP2 on top of mptcp using 2 interfaces on client and 2 on server end (Can share some steps to set it up if needed) to download files from a server caddy 0.10. hyper HTTP1 downloads the files faster (at iperf tcp measured end-to-end bandwidth) than HTTP2 [check the pcap files]().

Probable source of problem

Although I am using 1 stream over HTTP2 in my case, the infrastructure provided by hyper HTTP2 to have multiple-streams could have overhead while reading from 2 interfaces into the buffer. Any other insights are welcome.

Other HTTP2 client tried

curl with http2, also performs faster than hyper HTTP2

Code used

hyper HTTP2 client script to download file hyper HTTP1 client script to download file curl HTTP2 client script to download file

Dependancies

caddy 0.10 use Caddyfile. run: ./caddy -http2 -log a.log Installing curl http2 using curl HTTP2 due need to observe data chunks as they are downloaded we made small modification to hyper HTTP1

Extra info

Can send pacp files for the 2 interfaces used if necessary (for curl HTTP2, hyper HTTP1 and hyper HTTP2)

deshmukhrajvardhan commented 6 years ago

Hi All, Can you please give me some feedback on if you need me to better document/ask the question? Or give me hints on who to approach?

Thanks, Raj

alangibson commented 6 years ago

I wouldn't assume mptcp has any anything to do with it. I've noticed in a load testing script that it takes nearly twice as long to download a test resource using HTTP2 as it does using HTTP/1.1 on a totally stock Ubuntu install.

deshmukhrajvardhan commented 5 years ago

Hi @alangibson I have switched to using a c++ based application using libcurl library and it is giving me good (expected) performance.