On Mon, Sep 28, 2020 at 10:59 AM Mark Thomas <ma...@apache.org> wrote:
> On 28/09/2020 09:13, Martin Grigorov wrote: > > <snip/> > > > Good news: there are no regressions! > > So far, so good. > > > Neutral news: there are no performance improvements according to my > tests. > > I use > > > https://github.com/martin-g/http2-server-perf-tests/blob/128f24e27ef96ee31740db4130855bea2c021793/java/tomcat/src/main/java/info/mgsolutions/tomcat/Main.java > > to test HTTP2, h2c, HTTP and HTTPS > > HTTP: 28K reqs/s > > H2C: 14K reqs/s > > HTTP2: 11K req/s > > > > I still use Vegeta as a test client + my patch to ignore CANCEL errors > > You might want to try without that CANCEL error patch. The Tomcat code > should be more robust against that sort of error now as it retains state > for at least 5x max concurrent streams now. > > I see slightly different figures when testing locally with Vegeta: > > HTTP: 30.5k req/s > HTTPS: 18.0k req/s > h2c: 20.7k req/s > h2: 17.2k req/s > > There are a couple of unexpected things there: > - large drop from HTTP to HTTPS > - similar HTTP figures for your test and mine but very different h2/h2c > figures > > Given how unrepresentative local testing is I'm not entirely surprised. > > I'm not planning on spending any time digging into these differences. > > Running load tests with a profiler shows the biggest bottleneck is > around I/O. There might be some small gains to be made with better > buffering to reduce the number of network writes but implementing that > change is more complex for the async HTTP/2 implementation. > I was planning to do a buffer queue at one point but then it didn't look so nice and useful in practice. Rémy