Skip to content

Instantly share code, notes, and snippets.

@markpapadakis
Last active June 9, 2021 13:35
Show Gist options
  • Save markpapadakis/650081d3ee8cf6d1cedc to your computer and use it in GitHub Desktop.
Save markpapadakis/650081d3ee8cf6d1cedc to your computer and use it in GitHub Desktop.
Interconnect: LAN(1GB)
Server: 12 core Xeon E5-2620 at 2Ghz, 16GB RAM
Client running on idle node with similar h/w configuration. Used latest wrk2 release
https://github.com/giltene/wrk2
Tried different configuration options, results for configuration that gave best results
See also: https://gist.github.com/markpapadakis/dee39f95a404edfb8d6c
# Apache2: http://10.5.5.20/index.html
Requests/sec: 83704.15
> More or less expected that kind of throughput
# h2o: http://10.5.5.20:8087/hello.html
Requests/sec: 310725.04
> Very good results
# gwan: http://10.5.5.20:8080/hello.html
Requests/sec: 352548.58
> It beat all other 3d party web servers in https://gist.github.com/markpapadakis/dee39f95a404edfb8d6c
> but didn’t do as well in this configuration
# nginx: http://10.5.5.20:82/index.html
Requests/sec: 281760.75
> Very respectable. Better than previous benchmark.
> It’s not as fast as others in this list, but it’s very fast and support, community, modules, configurability
> make up for it.
# nxweb: http://10.5.5.20:8055/hello.html
Requests/sec: 397224.45
> Very fast, the fastest 3d party web server. Look into it.
# monkey: http://10.5.5.20:2001/hello.html
Requests/sec: 250870.94
> Good results. Code is well structured, easy to understand its implementation design.
# lwan : https://github.com/lpereira/lwan (compiled in release mode/configuration)
Running 10s test @ http://10.5.5.20:8080/hello
10 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.58s 2.73s 9.72s 57.66%
Req/Sec -nan -nan 0.00 0.00%
3621396 requests in 9.99s, 818.51MB read
Requests/sec: 362356.80
# LightHTTPD: http://10.5.5.20:83/hello.html
Requests/sec: 32735.10
> This is consistently slow. Avoid
# Link: http://10.5.5.20:8090/hello.html
Requests/sec: 434931.64
> Our s/w load balancer, in heavy use here. A major rewrite that should
> give us some 10-20% improvement in the works.
# httpSrv: http://10.5.5.20:1027/hello.html
Requests/sec: 511935.80
> Our purprose-built webserver; very minimal functionality (static files).
> Still, faster than any other tested.
@markpapadakis
Copy link
Author

Sure, what would you like to know?

@frankmullerl
Copy link

@markpapadakis how big is this hello.html file?
Where can i find this httpSrv? I would like to give it a go.

@markpapadakis
Copy link
Author

Hello @frankmullerl
This is no longer around but for what it’s worth, my latest take on this ( on the same hardware ) managed 78k RPS on a single OS thread ( should scale linearly with number of (reactor) cores).

@eecheng87
Copy link

Hi, thanks for your summary about performance of various web server and interesting approach about httpSrv.
I've read yours article on medium and wonder do you publish or can I get the source code of httpSrv?

@markpapadakis
Copy link
Author

@eecheng87 Hello! That's not really around anymore, and furthermore, we have since adopted io_uring and a different approach for parsing HTTP request header which resulted in a substantial improvement in performance.
That code is not OSS yet, but it will likely be included in a project we mean to open source soon. Sorry about that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment