On Mon, Sep 21, 2020 at 4:46 PM Rémy Maucherat <r...@apache.org> wrote:
> On Mon, Sep 21, 2020 at 2:49 PM Martin Grigorov <mgrigo...@apache.org> > wrote: > > > Hi Remy, > > > > On Mon, Sep 21, 2020 at 2:56 PM Rémy Maucherat <r...@apache.org> wrote: > > > > <snip/> > > > > > > > > 2020-09-21 14:25:04.850 DEBUG 232086 --- > [https-jsse-nio-18080-exec-8] > > > > o.a.coyote.http11.Http11NioProtocol : Found processor [null] for > > > > socket [org.apache.tomcat.util.net.SecureNioChannel@2b435926 > > > > :java.nio.channels.SocketChannel[connected > > > > local=/127.0.0.1:18080 remote=/127.0.0.1:42229]] > > > > 2020-09-21 14:25:04.850 DEBUG 232086 --- > [https-jsse-nio-18080-exec-6] > > > > o.a.coyote.http2.Http2UpgradeHandler : Connection [2] > > > > > > > > java.io.IOException: Unable to unwrap data, invalid status [CLOSED] > > > > at org.apache.tomcat.util.net > > > > .SecureNioChannel.read(SecureNioChannel.java:766) > > > > at org.apache.tomcat.util.net > > > > > > > > > > .NioEndpoint$NioSocketWrapper$NioOperationState.run(NioEndpoint.java:1468) > > > > > > > > > > When I tested HTTP/2, I used h2c (unencrypted) to get a better idea at > > > what's going on. Otherwise you don't really know what proportion of TLS > > or > > > HTTP/2 impacts performance more [and then you have to test more things > > like > > > OpenSSL, be careful that the ciphers used are the same and equally well > > > optimized in each impl, etc]. > > > > > > Then once you feel happy about h2c, you can see how things go with TLS. > > > > > > > Chris also suggested that TLS might be the problem for the low throughput > > but I get good throughput for both HTTP (15-16 K) and HTTPS (12-13 K > > reqs/s). Only when HTTP2 is enabled it drops. The reason is more clear > now > > - it is due to the extra RST packets being sent. > > > > Vegeta does support h2c! So I can give it a try! > > > > How one configures Tomcat to support h2c ? Just remove <SSLHostConfig> ? > > I've just tried this but I am not sure how to verify that it works. > > The browsers do not support h2c. curl and httpie neither. > > Quick search suggested me https://github.com/fstab/h2c "h2c connect > > localhost:18080" failed with "Failed to connect to localhost:18080: tls: > > oversized record received with length 20527" > > > > Yes, it depends on the client. h2load works just fine without TLS for > example, and it's actually the reason why I added h2c support in Tomcat. > > As for the configuration, it's a normal non TLS HTTP/1.1 config with the > UpgradeProtocol element added. > The way to use h2c with curl is: curl -i --http2-prior-knowledge http://localhost:18080/... (with my change in reset() to avoid the connection closes): vegeta ... -http2=f -h2c ... gives 13 K reqs/s vegeta ... -http2 ... gives 8.2 K reqs/s so, it seems TLS reduces the throughput with 40% Martin > > Rémy > > > > > > > > > > > > > > Rémy > > > > > > > > > > > > > > >