Esa Httpserver Save

An asynchronous event-driven HTTP server based on netty.

Project README

ESA HttpServer

Build codecov Maven Central GitHub license

ESA HttpServer is an asynchronous event-driven http server based on netty.

Features

  • Asynchronous request handing
  • Http1/H2/H2cUpgrade
  • Https
  • HAProxy
  • Epoll/NIO
  • Chunked read/write
  • Body aggregation
  • Multipart
  • Metrics
  • more features...

Maven Dependency

<dependency>
    <groupId>io.esastack</groupId>
    <artifactId>httpserver</artifactId>
    <version>${mvn.version}</version>
</dependency>

Quick Start

HttpServer.create()
        .handle(req -> {
            req.onData(buf -> {
                // handle http content 
            });
            req.onEnd(p -> {
                req.response()
                        .setStatus(200)
                        .end("Hello ESA Http Server!".getBytes());
                return p.setSuccess(null);
            });
        })
        .listen(8080)
        .awaitUninterruptibly();

Performance

Test cases

  • We built an echo server by ESA HttpServer and used a http client to do the requests for RPS testing with different bytes payload(16B, 128B, 512B, 1KB, 4KB, 10KB)
  • Also we used origin netty to build a server which is same with above for RPS testing (uses the HttpServerCodec, HttpObjectAggregator handlers directly).

Hardware Used

We used the following software for the testing:

  • wrk4.1.0

  • OS CPU Mem(G)
    server centos:6.9-1.2.5(docker) 4 8
    client centos:7.6-1.3.0(docker) 16 3

JVM Options

-server -Xms3072m -Xmx3072m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintTenuringDistribution -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:logs/gc-${appName}-%t.log -XX:NumberOfGCLogFiles=20 -XX:GCLogFileSize=480M -XX:+UseGCLogFileRotation -XX:HeapDumpPath=.

Server Options

  • we set the value of IO threads to 8.

RPS

16B 128B 512B 1KB 4KB 10KB
Netty 133272.34 132818.53 132390.78 127366.28 85408.7 49798.84
ESA HttpServer 142063.99 139608.23 139646.04 140159.5 92767.53 53534.21
Open Source Agenda is not affiliated with "Esa Httpserver" Project. README Source: esastack/esa-httpserver
Stars
86
Open Issues
3
Last Commit
1 year ago
License

Open Source Agenda Badge

Open Source Agenda Rating