the-benchmarker / web-frameworks

Which is the fastest web framework?
MIT License
6.98k stars 665 forks source link

Benchmark in HTTP/2 and H2Load #4367

Open proyb6 opened 3 years ago

proyb6 commented 3 years ago

I think it is worth to discuss if there is any interest in benchmark with http/2 since it has been widely used across the web ecosystem.

waghanza commented 3 years ago

sure it will be awesome to gather any feedback on this ... probably better to use Discussions tab for this

I'm 100% ok for this, but have to be properly planned in a roadmap (btw I'm not sure wrk could support http2)

proyb6 commented 3 years ago

wrk does not support H2, and all use h2load to benchmark among reverse proxy like LiteSpeed, Caddy, Nginx, etc.

waghanza commented 3 years ago

who is all ?

better to have a discussion about sieger, then.

could any like be https://github.com/tsenart/vegeta

either one for http1 / http2 / https or several tools

proyb6 commented 3 years ago

Centminmod, LiteSpeed, etc use h2load.

https://community.centminmod.com/threads/caddy-http-2-server-benchmarks-part-2.12873/ https://vpnwp.com/performing-performance-request-test-between-nginx-vs-openlitespeed-with-h2load.wp

Have not use Vegeta or alternative, but it would be nice to reopen the old discussion on benchmark tools.

schamberg97 commented 3 years ago

This generally doesn't make sense for node.js as the most common pattern is to place node.js instances behind reverse proxy like nginx. Moreover, nginx doesn't use http2 to contact backend servers, relying on http 1.1. Http 2 is only implemented for client requests.

Thus, in many cases http2 support in framework might be irrelevant at this point

waghanza commented 3 years ago

nginx doesn't use http2 to contact backend servers

are you sure that nginx could not use http2 to proxify any http2 requests

http 2 is only implemented for client requests

this is generally the big part on network communication

Thus, in many cases http2 support in framework might be irrelevant at this point

Not sure about this, but in deed when behind a proxy on http1.1 or behind on app engin that does not support http2

schamberg97 commented 3 years ago

Absolutely, nginx have never implemented the ability to proxy http2 requests. It will always get content from upstream using http1.1 proto and MAY then pass it as http2 to end client

https://trac.nginx.org/nginx/ticket/923