Hi Chris, On Tue, Sep 15, 2020 at 5:09 PM Christopher Schultz < ch...@christopherschultz.net> wrote:
> -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > Martin, > > On 9/15/20 07:37, Martin Grigorov wrote: > > I am running some load tests on Tomcat and I've noticed that when > > HTTP2 is enabled the throughput drops considerably. > > > > Here are the steps to reproduce: > > > > 1) Enable HTTP2, e.g. by commenting out this connector: > > https://github.com/apache/tomcat/blob/d381d87005fa89d1f19d9091c0954f31 > 7c135d9d/conf/server.xml#L103-L112 > <https://github.com/apache/tomcat/blob/d381d87005fa89d1f19d9091c0954f317c135d9d/conf/server.xml#L103-L112> > > > > 2) Download Vegeta load tool from: > > https://github.com/tsenart/vegeta/releases/ > > > > 3) Run the load tests: > > > > 3.1) HTTP/1.1 echo -e '{"method": "GET", "url": > > "http://localhost:8080/examples/"}' | vegeta attack -format=json > > -rate=0 -max-workers=1000 -duration=10s | vegeta encode > > > /tmp/http1.json; and vegeta report -type=json /tmp/http1.json | jq > > . > > > > 3.2) HTTP2 echo -e '{"method": "GET", "url": > > "https://localhost:8443/examples/"}' | vegeta attack -format=json > > -http2 -rate=0 -max-workers=1000 -insecure -duration=10s | vegeta > > encode > /tmp/http2.json; and vegeta report -type=json > > /tmp/http2.json | jq . > > You are using HTTP with 1.1 and HTTPS with h2. Maybe you are seeing > CPU slowdown for the (probably double encryption) taking place on the > same host? > I've tested against HTTPS without H2 - it makes 13K reqs/sec here, i.e. 2-3 K less than HTTP. The above numbers are when I use the examples' index.html page as a target. When I use ===================================================== package load.servlet; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.charset.StandardCharsets; @WebServlet(urlPatterns = PlainTextServlet.URL_PATTERN) public class PlainTextServlet extends HttpServlet { static final String URL_PATTERN = "/servlet/plaintext"; private static final String CONTENT_TYPE = "text/plain;charset=UTF-8"; private static final byte[] CONTENT = "Hello world!".getBytes(StandardCharsets.UTF_8); private static final int CONTENT_LENGTH = CONTENT.length; @Override protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { resp.setContentType(CONTENT_TYPE); resp.setContentLength(CONTENT_LENGTH); resp.getOutputStream().write(CONTENT); } } ===================================================== I can get 33-35 K reqs/sec with HTTP > > - -chris > -----BEGIN PGP SIGNATURE----- > Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/ > > iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl9gyyIACgkQHPApP6U8 > pFiNUxAAnUQVU73nNitIyn6zD9t4JfkLIv/AKTlds4/W/p6TRtIQgTX7nIJjGDfw > BOKznCHmieMJon4rMZ3d8GFhmUP8CawQlJHpqABeITBzLZZ5x9fuOf22G6HJb3r+ > +k0qDoKzFTWlJuWLwaLZHy6fO9ugi4OPAW0G0efa2T6sTDZzImGnjmoZ5PWBExoz > mXmYWnZeP7R+3QkAWUYArJh9yPEJyIb9nFX1YKZ1l5Erzrn0F9uEYFgWT/UkQoKM > L65AMh/qEvzJhP2wHOLm4NfAiNO4OgTmo+nm4F/SIMGFNURPFi2sl/jTUHVAzEa4 > mAqlJqX1swimyjjsunlfhbU/bApvVFsYSPuSYcZmLN1lkmaQOAuWHnZdd4e9h+tt > rhoKXipk8OairYzwQsPVnzCTHaiAhOXJ3MSE966YwlvhSMOoqDsN3y7ySrboresD > iC0cDo+43/wR3IQlOJYFxcFX+tI2Y29ZjrX/IwnJXuVyU095YZWmRFC2JgRfzBtI > toM2ofpqnSBaS22ZBTbqp+q1QxRZfC3r0vuvuiXK620QRcbk1Ya0+U17LOIEYnuY > URY94kL80upiADQMIdryq4ubRAma2t0s5c6JuO/QqsXVjJfawlRGQA5arORgfE2J > yDCscyyFCHitEGTglIJUXW/KfFPtraWnON3TSCm7dQ55EmInxpc= > =76Zf > -----END PGP SIGNATURE----- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >