Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-dev] Jetty as High Performant Http Engine - Handle 2Million Reqs/Sec ?

Hello Jetty Experts ,  
     I have been working on the use case where i should create simple http server to serve ~1.5 - 2  Million Requests per Second per Instance ..

Recently i started doing benchmarking different servers and here is the result of Jetty.

Running 1m test @ http://127.0.0.1:8080/
  20 threads and 40 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     0.95ms  669.89us  17.00ms   96.71%
    Req/Sec     2.20k   170.21     2.95k    73.26%
  Latency Distribution
     50%  849.00us
     75%    0.97ms
     90%    1.14ms
     99%    4.23ms
  2622609 requests in 1.00m, 382.67MB read
Requests/sec:  43637.79
Transfer/sec:      6.37MB

At max i can see ~50K reqs/sec which is less for my use case .. 

Here is the Jetty Server and Handler Code:

Server server = new Server();
        String port = cmd.getOptionValue("p");
        HttpConfiguration httpConfiguration = new HttpConfiguration();
        httpConfiguration.setSendServerVersion(false);
        httpConfiguration.setSendXPoweredBy(false);
        
        ServerConnector httpConnector = new ServerConnector(server, new HttpConnectionFactory(httpConfiguration));
        httpConnector.setPort(Integer.parseInt(port));
        httpConnector.setName("http");
        httpConnector.setIdleTimeout(30000);
        httpConnector.setSoLingerTime(20);
        server.addConnector(httpConnector);
        
        ContextHandler context = new ContextHandler();
        context.setContextPath( "/helloworld" );
        
        JettyHandler requestHandler = new JettyHandler();
        HandlerCollection handlers = new HandlerCollection();
        handlers.addHandler(context);
        handlers.addHandler(requestHandler);
        server.setHandler(handlers);
        server.start();
        server.join();




  public class JettyHandler extends AbstractHandler
  {

  public void handle( final String target, final  Request baseRequest,
      final  HttpServletRequest request, final HttpServletResponse response
      ) 
  throws IOException, ServletException
  {
  response.setContentType("text/html;charset=utf-8");
  response.setStatus(HttpServletResponse.SC_OK);
  baseRequest.setHandled(true);
  final StringBuffer reqBuff = new StringBuffer();
  String line = null;
  BufferedReader reader = null;
  try {
    reader = request.getReader();
    while ((line = reader.readLine()) != null)
      reqBuff.append(line);
  } catch (Exception e) { }
   finally{reader.close();}
  final PostToKafka post2Kafka = new PostToKafka();
  try {
  post2Kafka.write2Kafka(reqBuff.toString());  --> This is really High Performant :)..
  } catch (Exception e) {
  e.printStackTrace();
  }
  response.getWriter().println("SUCCESS");
  }

  }

How to tune Jetty Performance ?

--Senthil

Back to the top