├── .gitmodules ├── .tm_properties ├── README.md ├── benchmarks ├── cowboy │ ├── .gitignore │ ├── Makefile │ ├── rel │ │ ├── sys.config │ │ └── vm.args │ ├── relx.config │ ├── run.sh │ └── src │ │ ├── hello.app.src │ │ ├── hello_app.erl │ │ ├── hello_handler.erl │ │ └── hello_sup.erl ├── cppsp │ ├── .gitignore │ └── run.sh ├── crow │ ├── .gitignore │ ├── helloworld.cpp │ └── run.sh ├── go-fasthttp │ ├── .gitignore │ ├── helloworldserver.go │ └── run.sh ├── go │ ├── helloworldserver.go │ └── run.sh ├── hapi │ ├── .gitignore │ ├── index.js │ ├── package.json │ └── run.sh ├── jester │ ├── .gitignore │ ├── clean.sh │ ├── helloworldserver.nim │ ├── nim.cfg │ ├── run_mnsgc.sh │ └── run_rc.sh ├── kore │ ├── .gitignore │ ├── conf │ │ └── kore.conf │ ├── dh2048.pem │ ├── run.sh │ └── src │ │ └── kore.c ├── microhttpd │ ├── .gitignore │ ├── helloworld.c │ └── run.sh ├── netty │ ├── .gitignore │ ├── build.gradle │ ├── run.sh │ └── src │ │ └── main │ │ └── java │ │ ├── HelloWorldServer.java │ │ ├── HelloWorldServerHandler.java │ │ └── HelloWorldServerPipelineFactory.java ├── nginx │ ├── .gitignore │ ├── conf │ │ ├── echo.conf │ │ └── lua.conf │ ├── run_echo.sh │ └── run_lua.sh ├── nim │ ├── .gitignore │ ├── clean.sh │ ├── helloworldserver.nim │ ├── run_mnsgc.sh │ └── run_rc.sh ├── node │ ├── cluster.js │ └── run.sh ├── onion │ └── run.sh ├── puma │ ├── Gemfile │ ├── Gemfile.lock │ ├── config.ru │ └── run.sh ├── rust │ ├── .gitignore │ ├── Cargo.toml │ ├── run.sh │ └── src │ │ └── main.rs ├── undertow │ ├── .gitignore │ ├── build.gradle │ ├── run.sh │ └── src │ │ └── main │ │ └── java │ │ └── HelloWorldServer.java └── vibed │ ├── .gitignore │ ├── dub.sdl │ ├── run.sh │ └── source │ └── app.d ├── common ├── sysctl-optimized-ubuntu14.04-restore.conf ├── sysctl-optimized.conf └── threads.sh ├── results ├── E5-1650v2-Ubuntu-14.04LTS │ ├── cowboy_01.txt │ ├── cowboy_02.txt │ ├── cowboy_03.txt │ ├── cowboy_04.txt │ ├── crow_01.txt │ ├── crow_02.txt │ ├── crow_03.txt │ ├── crow_04.txt │ ├── go-fasthttp_01.txt │ ├── go-fasthttp_02.txt │ ├── go-fasthttp_03.txt │ ├── go-fasthttp_04.txt │ ├── go-fasthttp_prefork_01.txt │ ├── go-fasthttp_prefork_02.txt │ ├── go-fasthttp_prefork_03.txt │ ├── go-fasthttp_prefork_04.txt │ ├── go_01.txt │ ├── go_02.txt │ ├── go_03.txt │ ├── go_04.txt │ ├── hapi_01.txt │ ├── hapi_02.txt │ ├── hapi_03.txt │ ├── hapi_04.txt │ ├── jester_mnsgc_01.txt │ ├── jester_mnsgc_02.txt │ ├── jester_mnsgc_03.txt │ ├── jester_mnsgc_04.txt │ ├── jester_rc_01.txt │ ├── jester_rc_02.txt │ ├── jester_rc_03.txt │ ├── jester_rc_04.txt │ ├── kore_01.txt │ ├── kore_02.txt │ ├── kore_03.txt │ ├── kore_04.txt │ ├── microhttpd_01.txt │ ├── microhttpd_02.txt │ ├── microhttpd_03.txt │ ├── microhttpd_04.txt │ ├── netty_01.txt │ ├── netty_02.txt │ ├── netty_03.txt │ ├── netty_04.txt │ ├── nginx_echo_01.txt │ ├── nginx_echo_02.txt │ ├── nginx_echo_03.txt │ ├── nginx_echo_04.txt │ ├── nginx_lua_01.txt │ ├── nginx_lua_02.txt │ ├── nginx_lua_03.txt │ ├── nginx_lua_04.txt │ ├── nim_mnsgc_01.txt │ ├── nim_mnsgc_02.txt │ ├── nim_mnsgc_03.txt │ ├── nim_mnsgc_04.txt │ ├── nim_mnsgc_prefork_01.txt │ ├── nim_mnsgc_prefork_02.txt │ ├── nim_mnsgc_prefork_03.txt │ ├── nim_mnsgc_prefork_04.txt │ ├── nim_rc_01.txt │ ├── nim_rc_02.txt │ ├── nim_rc_03.txt │ ├── nim_rc_04.txt │ ├── nim_rc_prefork_01.txt │ ├── nim_rc_prefork_02.txt │ ├── nim_rc_prefork_03.txt │ ├── nim_rc_prefork_04.txt │ ├── node_01.txt │ ├── node_02.txt │ ├── node_03.txt │ ├── node_04.txt │ ├── onion_01.txt │ ├── onion_02.txt │ ├── onion_03.txt │ ├── onion_04.txt │ ├── puma_01.txt │ ├── puma_02.txt │ ├── puma_03.txt │ ├── puma_04.txt │ ├── rust_01.txt │ ├── rust_02.txt │ ├── rust_03.txt │ ├── rust_04.txt │ ├── undertow_01.txt │ ├── undertow_02.txt │ ├── undertow_03.txt │ ├── undertow_04.txt │ ├── vibed-ldc2_01.txt │ ├── vibed-ldc2_02.txt │ ├── vibed-ldc2_03.txt │ ├── vibed-ldc2_04.txt │ ├── vibed_01.txt │ ├── vibed_02.txt │ ├── vibed_03.txt │ └── vibed_04.txt └── i5-2400S-OSX-10.10.3 │ ├── cowboy_01.txt │ ├── cowboy_02.txt │ ├── cowboy_03.txt │ ├── cowboy_04.txt │ ├── go_01.txt │ ├── go_02.txt │ ├── go_03.txt │ ├── go_04.txt │ ├── jester_rc_01.txt │ ├── jester_rc_02.txt │ ├── jester_rc_03.txt │ ├── jester_rc_04.txt │ ├── netty_01.txt │ ├── netty_02.txt │ ├── netty_03.txt │ ├── netty_04.txt │ ├── nginx_echo_01.txt │ ├── nginx_echo_02.txt │ ├── nginx_echo_03.txt │ ├── nginx_echo_04.txt │ ├── nginx_lua_01.txt │ ├── nginx_lua_02.txt │ ├── nginx_lua_03.txt │ ├── nginx_lua_04.txt │ ├── nim_mnsgc_01.txt │ ├── nim_mnsgc_02.txt │ ├── nim_mnsgc_03.txt │ ├── nim_mnsgc_04.txt │ ├── nim_rc_01.txt │ ├── nim_rc_02.txt │ ├── nim_rc_03.txt │ ├── nim_rc_04.txt │ ├── onion_01.txt │ ├── onion_02.txt │ ├── onion_03.txt │ ├── onion_04.txt │ ├── ruby_puma_01.txt │ ├── ruby_puma_02.txt │ ├── ruby_puma_03.txt │ ├── ruby_puma_04.txt │ ├── rust_iron_01.txt │ ├── rust_iron_02.txt │ ├── rust_iron_03.txt │ ├── rust_iron_04.txt │ ├── undertow_01.txt │ ├── undertow_02.txt │ ├── undertow_03.txt │ └── undertow_04.txt └── time.sh /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "benchmarks/onion/lib/libev"] 2 | path = benchmarks/onion/lib/libev 3 | url = ../../scunningham/libev.git 4 | [submodule "benchmarks/onion/lib/onion"] 5 | path = benchmarks/onion/lib/onion 6 | url = ../../davidmoreno/onion.git 7 | [submodule "benchmarks/crow/lib/crow"] 8 | path = benchmarks/crow/lib/crow 9 | url = ../../ipkn/crow.git 10 | [submodule "benchmarks/kore/lib/kore"] 11 | path = benchmarks/kore/lib/kore 12 | url = ../../jorisvink/kore.git 13 | [submodule "benchmarks/jester/lib/jester"] 14 | path = benchmarks/jester/lib/jester 15 | url = ../../dom96/jester 16 | -------------------------------------------------------------------------------- /.tm_properties: -------------------------------------------------------------------------------- 1 | includeFiles = '.gitignore' 2 | 3 | [ source.markdown; *.md ] 4 | wrapColumn = 80 5 | softWrap = false 6 | showWrapColumn = true 7 | spellChecking = true 8 | spellingLanguage = 'en' 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Web Frameworks Benchmark 2 | ------------------------ 3 | [techempower]: https://www.techempower.com/benchmarks/ 4 | 5 | The idea behind this benchmark is to re-evaluate results presented by 6 | [Techempower's Benchmark][techempower] benchmarking best & promising 7 | open-source frameworks. 8 | 9 | 10 | ### Why another benchmark? 11 | 12 | I just found [Techempower's Benchmark][techempower] sources overcomplicated. 13 | Also wanted to test only framework overhead, that's why testing just trivial 14 | dynamic `Hello World` world output. 15 | 16 | Just to not raise a controversy, I want also to emphasize this benchmark is 17 | simple & native and completely skips some unique features of some frameworks 18 | and languages, such as Erlang's natural clustering and hot-swap capabilities. 19 | 20 | 21 | ### Results 22 | 23 | [undertow]: http://undertow.io 24 | [netty]: http://netty.io 25 | [node]: https://nodejs.org/api/cluster.html 26 | [go]: http://golang.org/pkg/net/http/ 27 | [onion]: https://github.com/davidmoreno/onion 28 | [cowboy]: http://ninenines.eu/docs/en/cowboy/1.0/guide/getting_started/ 29 | [nim]: http://nim-lang.org 30 | [puma]: http://puma.io 31 | [echo]: http://wiki.nginx.org/HttpEchoModule 32 | [resty]: http://openresty.org 33 | [iron]: http://ironframework.io 34 | [jester]: https://github.com/dom96/jester 35 | [vibed]: http://vibed.org 36 | [dmd]: https://dlang.org/download.html 37 | [crow]: https://github.com/ipkn/crow 38 | [kore]: https://kore.io 39 | [mhttpd]: https://www.gnu.org/software/libmicrohttpd/ 40 | [fasthttp]: https://github.com/valyala/fasthttp 41 | 42 | | Language | Framework | Req/sec1| MB/sec| 99% ms2| 43 | | ------------- | ------------------------ | ----------:| -----:| -----------:| 44 | | Java | [Undertow][undertow] | 616 547 | 80.55 | 3.29 | 45 | | C | [Kore][kore] 3| 572 782 |104.33 | 3.99 | 46 | | C | [libmicrohttpd][mhttpd] | 533 626 | 69.72 | 1.28 | 47 | | Go | [fasthttp][fasthttp] | 485 185 | 67.56 | 5.26 | 48 | | C | [Onion][onion] 4| 483 824 | 90.90 | 2.82 | 49 | | Java | [Netty][netty] | 422 580 | 40.30 | 4.08 | 50 | | Nim m&s 6| [AsyncHTTPServer][nim] | 404 040 | 43.93 | 3.98 | 51 | | Native | [Nginx][echo] 5| 381 368 | 43.26 | 24.24 | 52 | | Go | [net/http][go] | 270 253 | 34.28 | 2.52 | 53 | | Lua | [OpenResty][resty] 7| 269 205 | 30.28 | 43.35 | 54 | | C++ | [Crow][crow] | 256 552 | 31.32 | 12.28 | 55 | | Rust | [Iron][iron] | 178 789 | 19.44 | 0.05 8| 56 | | Erlang | [Cowboy][cowboy] 9| 163 521 | 24.01 | 5.41 | 57 | | Node | [HTTP][node] | 112 086 | 13.79 | 11.98 | 58 | | Nim m&s10| [AsyncHTTPServer][nim] | 86 741 | 9.43 | 1.40 | 59 | | Nim m&s10| [Jester][nim] 11| 83 753 | 5.99 | 1.50 | 60 | | Ruby | [Puma][puma] 12| 83 053 | 6.02 | 6.14 | 61 | | D ldc2 13| [Vibe.d][vibed] 0.7.26| 79 602 | 13.28 | 46.41 | 62 | | D dmd 14| [Vibe.d][vibed] 0.7.26| 76 839 | 12.75 | 103.05 | 63 | | Nim 15| [AsyncHTTPServer][nim] | 52 843 | 5.75 | 4.76 | 64 | | Nim 15| [Jester][jester] | 42 698 | 3.05 | 5.42 | 65 | 66 | 1 *Ubuntu 14.04 LTS*, *Linux 3.16*, 67 | *Xeon E5-1650* @ 3.50GHz, 32 GB RAM 68 | 2 Latency distribution value at 99% in milliseconds 69 | (towards worst) 70 | 71 | 3 *Core* built without SSL via using `make NOTLS=1`. 72 | 4 Running `hello` example with `static` path. 73 | 5 Using *Nginx* `echo` module. 74 | 6 *Nim* using `--gc:markandsweep`, pre-forked processes 75 | using `SO_REUSEPORT`. 76 | 7 *OpenResty* is in fact *Nginx* with *Lua* module. 77 | 8 *Rust* *Iron* has some amazing super-stable latency 78 | in longer runs. 79 | 9 *Cowboy* requires some low level tweaking via `sysctl`, see 80 | and apply [`sysctl.conf`](sysctl.conf). 81 | 10 *Nim* using `--gc:markandsweep`, single-thread only. 82 | 11 *Jester* is some higher-level web framework for Nim. 83 | 12 Using several *Ruby* instances with `puma -w 12`. 84 | 13 *D* language using [LDC2](dmd) compiler v0.16.1 (LLVM 3.7.0). 85 | 14 *D* language using standard [DMD](dmd) compiler v2.069.1. 86 | 15 *Nim* using standard RC garbage collection, single-thread only. 87 | 88 | **NOTE**: Detailed results can be found in [`results/`](results). 89 | 90 | 91 | ### Benchmarking details 92 | 93 | Each web framework is expected to respond with `Hello World` content of type 94 | `text/plain` with minimum set of headers required by HTTP 1.1 specification: 95 | 96 | ~~~ 97 | $ curl -i localhost:8080 98 | HTTP/1.1 200 OK 99 | Connection: Keep-Alive 100 | Content-Length: 11 101 | Content-Type: text/plain 102 | Date: Tue, 24 Nov 2015 17:32:30 GMT 103 | 104 | Hello World 105 | ~~~ 106 | 107 | Some frameworks add extra headers such as `Server` or `Expire` by default, 108 | which are not required by HTTP 1.1 specification. If possible we use some 109 | settings or tweaks to remove them as more headers (so more data) will have 110 | negative impact on performance. 111 | 112 | Effectively this benchmark tests solely the framework overhead itself. We are 113 | **not** testing any database access or JSON serialization performance. We are 114 | also avoiding some extra optimizations, such as caching response memory 115 | structures which could improve performance a bit, but contradicts dynamic 116 | behavior of tested frameworks. 117 | 118 | 119 | ### Conclusions 120 | 121 | As expected *Java* solution - [Undertow][undertow] is most optimized. 2nd & 3rd 122 | places are occupied by native C frameworks - [Kore][kore] and 123 | [libmicrohttpd][mhttpd]. 124 | 125 | Finally new [fasthttp][fasthttp] *Go* solution takes 4th place, being very 126 | close to the top 3. *Go* is very flexible little language, improving 127 | productivity and it is used already by many companies to deliver some 128 | heavy-load network services. 129 | 130 | It has to be also observed that different frameworks generated different amount 131 | of data due different HTTP headers being used. 132 | 133 | 134 | ### License 135 | 136 | This benchmark is provided under MIT license: 137 | 138 | > Copyright (c) 2015 Adam Strzelecki 139 | > 140 | > Permission is hereby granted, free of charge, to any person obtaining 141 | > a copy of this software and associated documentation files (the 142 | > "Software"), to deal in the Software without restriction, including 143 | > without limitation the rights to use, copy, modify, merge, publish, 144 | > distribute, sublicense, and/or sell copies of the Software, and to 145 | > permit persons to whom the Software is furnished to do so, subject to 146 | > the following conditions: 147 | > 148 | > The above copyright notice and this permission notice shall be 149 | > included in all copies or substantial portions of the Software. 150 | > 151 | > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 152 | > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 153 | > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 154 | > NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 155 | > LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 156 | > OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 157 | > WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 158 | -------------------------------------------------------------------------------- /benchmarks/cowboy/.gitignore: -------------------------------------------------------------------------------- 1 | /erlang.mk 2 | /.erlang.* 3 | /_rel/ 4 | /deps/ 5 | /ebin/ 6 | /relx 7 | -------------------------------------------------------------------------------- /benchmarks/cowboy/Makefile: -------------------------------------------------------------------------------- 1 | PROJECT = hello 2 | DEPS = cowboy 3 | include erlang.mk 4 | -------------------------------------------------------------------------------- /benchmarks/cowboy/rel/sys.config: -------------------------------------------------------------------------------- 1 | [ 2 | ]. 3 | -------------------------------------------------------------------------------- /benchmarks/cowboy/rel/vm.args: -------------------------------------------------------------------------------- 1 | ## Name of the node 2 | -name cowboy@127.0.0.1 3 | 4 | ## Cookie for distributed erlang 5 | -setcookie cowboy 6 | 7 | ## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive 8 | ## (Disabled by default..use with caution!) 9 | # -heart 10 | 11 | ## Enable kernel poll and a few async threads 12 | # +K true 13 | # +A 5 14 | 15 | ## Increase number of concurrent ports/sockets 16 | # -env ERL_MAX_PORTS 4096 17 | 18 | ## Tweak GC to run more often 19 | # -env ERL_FULLSWEEP_AFTER 10 20 | -------------------------------------------------------------------------------- /benchmarks/cowboy/relx.config: -------------------------------------------------------------------------------- 1 | {release, {hello_release, "1"}, [hello]}. 2 | {extended_start_script, true}. 3 | {sys_config, "rel/sys.config"}. 4 | {vm_args, "rel/vm.args"}. 5 | -------------------------------------------------------------------------------- /benchmarks/cowboy/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | [ -f erlang.mk ] || \ 6 | curl -O https://raw.githubusercontent.com/ninenines/erlang.mk/master/erlang.mk 7 | 8 | make && \ 9 | 10 | exec ./_rel/hello_release/bin/hello_release foreground 11 | -------------------------------------------------------------------------------- /benchmarks/cowboy/src/hello.app.src: -------------------------------------------------------------------------------- 1 | {application, hello, [ 2 | {description, ""}, 3 | {vsn, "0.1.0"}, 4 | {id, "git"}, 5 | {modules, []}, 6 | {registered, []}, 7 | {applications, [ 8 | kernel, 9 | stdlib, 10 | cowboy 11 | ]}, 12 | {mod, {hello_app, []}}, 13 | {env, []} 14 | ]}. 15 | -------------------------------------------------------------------------------- /benchmarks/cowboy/src/hello_app.erl: -------------------------------------------------------------------------------- 1 | -module(hello_app). 2 | -behaviour(application). 3 | 4 | -export([start/2]). 5 | -export([stop/1]). 6 | 7 | % remove some superflous headers 8 | % custom_onresponse(StatusCode, Headers, Body, Req)-> 9 | % Headers2 = lists:filter( 10 | % fun ({<<"server">>, _}) -> false ; 11 | % ({<<"date">>, _}) -> false ; 12 | % (_) -> true end, Headers), 13 | % {ok, Req2} = cowboy_req:reply(StatusCode, Headers2, Body, Req), 14 | % Req2. 15 | 16 | start(_Type, _Args) -> 17 | Dispatch = cowboy_router:compile([ 18 | {'_', [{"/", hello_handler, []}]} 19 | ]), 20 | cowboy:start_http(http, 100, [{port, 8080}, {max_connections, infinity}], 21 | [{env, [{dispatch, Dispatch}]} 22 | % , {onresponse, fun custom_onresponse/4} 23 | ] 24 | ), 25 | hello_sup:start_link(). 26 | 27 | stop(_State) -> 28 | ok. 29 | -------------------------------------------------------------------------------- /benchmarks/cowboy/src/hello_handler.erl: -------------------------------------------------------------------------------- 1 | -module(hello_handler). 2 | -behaviour(cowboy_http_handler). 3 | 4 | -export([init/3]). 5 | -export([handle/2]). 6 | -export([terminate/3]). 7 | 8 | -record(state, { 9 | }). 10 | 11 | init(_, Req, _Opts) -> 12 | {ok, Req, #state{}}. 13 | 14 | handle(Req, State=#state{}) -> 15 | {ok, Req2} = cowboy_req:reply(200, 16 | [{<<"content-type">>, <<"text/plain">>}], 17 | <<"Hello World!">>, 18 | Req), 19 | {ok, Req2, State}. 20 | 21 | terminate(_Reason, _Req, _State) -> 22 | ok. 23 | -------------------------------------------------------------------------------- /benchmarks/cowboy/src/hello_sup.erl: -------------------------------------------------------------------------------- 1 | -module(hello_sup). 2 | -behaviour(supervisor). 3 | 4 | -export([start_link/0]). 5 | -export([init/1]). 6 | 7 | start_link() -> 8 | supervisor:start_link({local, ?MODULE}, ?MODULE, []). 9 | 10 | init([]) -> 11 | Procs = [], 12 | {ok, {{one_for_one, 10, 10}, Procs}}. 13 | -------------------------------------------------------------------------------- /benchmarks/cppsp/.gitignore: -------------------------------------------------------------------------------- 1 | /*.xz 2 | /cppsp_1.0/ 3 | 4 | -------------------------------------------------------------------------------- /benchmarks/cppsp/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | [ -f cppsp_1.0.tar.xz ] || \ 6 | curl -O 'http://cznic.dl.sourceforge.net/project/cpollcppsp/CPPSP%201.0/cppsp_1.0.tar.xz' 7 | 8 | [ -d cppsp_1.0 ] || \ 9 | tar xf cppsp_1.0.tar.xz 10 | -------------------------------------------------------------------------------- /benchmarks/crow/.gitignore: -------------------------------------------------------------------------------- 1 | /helloworld 2 | -------------------------------------------------------------------------------- /benchmarks/crow/helloworld.cpp: -------------------------------------------------------------------------------- 1 | #include "crow.h" 2 | 3 | int main() { 4 | crow::SimpleApp app; 5 | CROW_ROUTE(app, "/")([]() { return "Hello World"; }); 6 | crow::logger::setLogLevel(crow::LogLevel::ERROR); 7 | app.port(8080).multithreaded().run(); 8 | } 9 | -------------------------------------------------------------------------------- /benchmarks/crow/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | cd $(dirname $0) 4 | set -x 5 | c++ -O3 \ 6 | -std=c++11 \ 7 | -Ilib/crow/include \ 8 | -o helloworld \ 9 | helloworld.cpp \ 10 | -lboost_system \ 11 | -lpthread \ 12 | && \ 13 | exec ./helloworld 14 | -------------------------------------------------------------------------------- /benchmarks/go-fasthttp/.gitignore: -------------------------------------------------------------------------------- 1 | /helloworldserver 2 | -------------------------------------------------------------------------------- /benchmarks/go-fasthttp/helloworldserver.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "flag" 5 | "fmt" 6 | "io" 7 | "log" 8 | "net" 9 | "os" 10 | "os/exec" 11 | "runtime" 12 | 13 | "github.com/valyala/fasthttp" 14 | "github.com/valyala/fasthttp/reuseport" 15 | ) 16 | 17 | var ( 18 | addr = flag.String("addr", ":8080", "TCP address to listen to") 19 | prefork = flag.Bool("prefork", false, "use prefork") 20 | affinity = flag.Bool("affinity", false, "use affinity for prefork") 21 | child = flag.Bool("child", false, "is child proc") 22 | ) 23 | 24 | func main() { 25 | flag.Parse() 26 | 27 | ln := getListener() 28 | 29 | if err := fasthttp.Serve(ln, requestHandler); err != nil { 30 | log.Fatalf("Error in ListenAndServe: %s", err) 31 | } 32 | } 33 | 34 | func requestHandler(ctx *fasthttp.RequestCtx) { 35 | io.WriteString(ctx, "Hello World") 36 | } 37 | 38 | func getListener() net.Listener { 39 | if !*prefork { 40 | ln, err := net.Listen("tcp4", *addr) 41 | if err != nil { 42 | log.Fatal(err) 43 | } 44 | return ln 45 | } 46 | 47 | if !*child { 48 | children := make([]*exec.Cmd, runtime.NumCPU()) 49 | for i := range children { 50 | if *affinity { 51 | children[i] = exec.Command(os.Args[0], "-prefork", "-child") 52 | } else { 53 | children[i] = exec.Command("taskset", "-c", fmt.Sprintf("%d", i), os.Args[0], "-prefork", "-child") 54 | } 55 | children[i].Stdout = os.Stdout 56 | children[i].Stderr = os.Stderr 57 | if err := children[i].Start(); err != nil { 58 | log.Fatal(err) 59 | } 60 | } 61 | for _, ch := range children { 62 | if err := ch.Wait(); err != nil { 63 | log.Print(err) 64 | } 65 | } 66 | os.Exit(0) 67 | panic("unreachable") 68 | } 69 | 70 | runtime.GOMAXPROCS(1) 71 | ln, err := reuseport.Listen("tcp4", *addr) 72 | if err != nil { 73 | log.Fatal(err) 74 | } 75 | return ln 76 | } 77 | -------------------------------------------------------------------------------- /benchmarks/go-fasthttp/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | . ../../common/threads.sh 6 | 7 | if [ -z "$(type -p go)" -a -x /usr/local/go/bin/go ]; then 8 | go=/usr/local/go/bin/go 9 | else 10 | go=go 11 | fi 12 | 13 | set -x 14 | GOMAXPROCS=${GOMAXPROCS-$threads} exec $go run helloworldserver.go "$@" 15 | -------------------------------------------------------------------------------- /benchmarks/go/helloworldserver.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "io" 5 | "log" 6 | "net/http" 7 | 8 | // "github.com/davecheney/profile" 9 | ) 10 | 11 | func main() { 12 | // defer profile.Start(profile.CPUProfile).Stop() 13 | http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { 14 | io.WriteString(w, "Hello World") 15 | }) 16 | log.Fatal(http.ListenAndServe(":8080", nil)) 17 | } 18 | -------------------------------------------------------------------------------- /benchmarks/go/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | . ../../common/threads.sh 6 | 7 | if [ -z "$(type -p go)" -a -x /usr/local/go/bin/go ]; then 8 | go=/usr/local/go/bin/go 9 | else 10 | go=go 11 | fi 12 | 13 | set -x 14 | GOMAXPROCS=$threads exec $go run helloworldserver.go 15 | -------------------------------------------------------------------------------- /benchmarks/hapi/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | -------------------------------------------------------------------------------- /benchmarks/hapi/index.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'), 2 | cluster = require('cluster'), 3 | Hapi = require('hapi'), 4 | numCPUs = require('os').cpus().length; 5 | 6 | cluster.schedulingPolicy = cluster.SCHED_NONE; 7 | 8 | 9 | if (cluster.isMaster) { 10 | console.log('forking on ' + numCPUs + ' CPUs'); 11 | for (var i = 0; i < numCPUs; i++) { 12 | cluster.fork(); 13 | } 14 | cluster.on('exit', function(worker, code, signal) { 15 | console.log('worker ' + worker.process.pid + ' died'); 16 | }); 17 | } else { 18 | var server = new Hapi.Server(); 19 | server.connection({ 20 | port: 8080 21 | }); 22 | server.route({ 23 | method: 'GET', 24 | path: '/', 25 | handler: function(request, reply) { 26 | reply('Hello World'); 27 | } 28 | }); 29 | server.start(); 30 | } 31 | -------------------------------------------------------------------------------- /benchmarks/hapi/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hapi-bench", 3 | "version": "1.0.0", 4 | "description": "Simple hello world benchmark", 5 | "main": "index.js", 6 | "scripts": { 7 | "server": "node index.js" 8 | }, 9 | "author": "Marcos Bérgamo ", 10 | "license": "MIT", 11 | "dependencies": { 12 | "hapi": "^8.4.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /benchmarks/hapi/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname "$0") 4 | 5 | npm install 6 | 7 | npm run server 8 | -------------------------------------------------------------------------------- /benchmarks/jester/.gitignore: -------------------------------------------------------------------------------- 1 | /helloworldserver 2 | /nimcache/ 3 | -------------------------------------------------------------------------------- /benchmarks/jester/clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | rm -rf helloworldserver nimcache 6 | -------------------------------------------------------------------------------- /benchmarks/jester/helloworldserver.nim: -------------------------------------------------------------------------------- 1 | import jester, asyncdispatch, strutils, math, os, asyncnet, re 2 | 3 | settings: 4 | port = Port(8080) 5 | 6 | routes: 7 | get "/": 8 | resp "Hello World" 9 | 10 | runForever() 11 | -------------------------------------------------------------------------------- /benchmarks/jester/nim.cfg: -------------------------------------------------------------------------------- 1 | path="lib/jester" 2 | -------------------------------------------------------------------------------- /benchmarks/jester/run_mnsgc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | [ -f helloworldserver ] || \ 6 | ${NIM-nim} c -d:release --gc:markandsweep helloworldserver.nim 7 | 8 | exec ./helloworldserver 9 | -------------------------------------------------------------------------------- /benchmarks/jester/run_rc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | [ -f helloworldserver ] || \ 6 | ${NIM-nim} c -d:release helloworldserver.nim 7 | 8 | exec ./helloworldserver 9 | -------------------------------------------------------------------------------- /benchmarks/kore/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | .objs 3 | kore.so 4 | assets.h 5 | cert 6 | -------------------------------------------------------------------------------- /benchmarks/kore/conf/kore.conf: -------------------------------------------------------------------------------- 1 | # Placeholder configuration 2 | 3 | bind 127.0.0.1 8080 4 | load ./kore.so 5 | tls_dhparam dh2048.pem 6 | 7 | workers 12 8 | worker_max_connections 250 9 | worker_rlimit_nofiles 1024 10 | worker_accept_threshold 10 11 | # worker_set_affinity 0 12 | 13 | domain localhost { 14 | certfile cert/server.crt 15 | certkey cert/server.key 16 | static / page 17 | } 18 | -------------------------------------------------------------------------------- /benchmarks/kore/dh2048.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DH PARAMETERS----- 2 | MIIBCAKCAQEAn4f4Qn5SudFjEYPWTbUaOTLUH85YWmmPFW1+b5bRa9ygr+1wfamv 3 | VKVT7jO8c4msSNikUf6eEfoH0H4VTCaj+Habwu+Sj+I416r3mliMD4SjNsUJrBrY 4 | Y0QV3ZUgZz4A8ARk/WwQcRl8+ZXJz34IaLwAcpyNhoV46iHVxW0ty8ND0U4DIku/ 5 | PNayKimu4BXWXk4RfwNVP59t8DQKqjshZ4fDnbotskmSZ+e+FHrd+Kvrq/WButvV 6 | Bzy9fYgnUlJ82g/bziCI83R2xAdtH014fR63MpElkqdNeChb94pPbEdFlNUvYIBN 7 | xx2vTUQMqRbB4UdG2zuzzr5j98HDdblQ+wIBAg== 8 | -----END DH PARAMETERS----- -------------------------------------------------------------------------------- /benchmarks/kore/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname "$0") 4 | 5 | kore run 6 | -------------------------------------------------------------------------------- /benchmarks/kore/src/kore.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int page(struct http_request *); 5 | 6 | int 7 | page(struct http_request *req) 8 | { 9 | http_response(req, 200, "Hello World", 12); 10 | return (KORE_RESULT_OK); 11 | } 12 | -------------------------------------------------------------------------------- /benchmarks/microhttpd/.gitignore: -------------------------------------------------------------------------------- 1 | /helloworld 2 | -------------------------------------------------------------------------------- /benchmarks/microhttpd/helloworld.c: -------------------------------------------------------------------------------- 1 | // based on libmicrohttpd benchmark.c 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | static const char *response_text = "Hello World"; 8 | 9 | static int ahc_echo(void *cls, struct MHD_Connection *connection, 10 | const char *url, const char *method, const char *version, 11 | const char *upload_data, size_t *upload_data_size, 12 | void **ptr) { 13 | int ret; 14 | if (strcmp(method, "GET")) 15 | return MHD_NO; // unexpected method 16 | 17 | // NOTE: we could allocate response once at startup, but this would 18 | // effectively not reflect dynamic nature of framework 19 | struct MHD_Response *response = MHD_create_response_from_buffer( 20 | strlen(response_text), (void *)response_text, MHD_RESPMEM_PERSISTENT); 21 | MHD_add_response_header(response, "Content-type", "text/plain"); 22 | ret = MHD_queue_response(connection, MHD_HTTP_OK, response); 23 | MHD_destroy_response(response); 24 | return ret; 25 | } 26 | 27 | int main(int argc, char *const *argv) { 28 | struct MHD_Daemon *d; 29 | d = MHD_start_daemon( 30 | MHD_USE_SELECT_INTERNALLY | MHD_USE_EPOLL_LINUX_ONLY | MHD_USE_EPOLL_TURBO 31 | // | MHD_SUPPRESS_DATE_NO_CLOCK 32 | , 33 | 8080, NULL, NULL, &ahc_echo, NULL, // main handler 34 | MHD_OPTION_CONNECTION_TIMEOUT, (unsigned int)120, // timeout 35 | MHD_OPTION_THREAD_POOL_SIZE, (unsigned int)12, // pool (threads) 36 | // MHD_OPTION_URI_LOG_CALLBACK, &uri_logger_cb, NULL, // logger 37 | // MHD_OPTION_NOTIFY_COMPLETED, &completed_callback, NULL, // completed 38 | MHD_OPTION_CONNECTION_LIMIT, (unsigned int)1024, // connections 39 | MHD_OPTION_END); 40 | if (d == NULL) 41 | return 1; 42 | (void)getc(stdin); 43 | MHD_stop_daemon(d); 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /benchmarks/microhttpd/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | cd $(dirname $0) 4 | set -x 5 | cc -O3 \ 6 | -o helloworld \ 7 | helloworld.c \ 8 | -lmicrohttpd \ 9 | && \ 10 | exec ./helloworld 11 | -------------------------------------------------------------------------------- /benchmarks/netty/.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /.gradle/ 3 | -------------------------------------------------------------------------------- /benchmarks/netty/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin:'java' 2 | apply plugin:'application' 3 | 4 | mainClassName = 'HelloWorldServer' 5 | 6 | repositories { 7 | mavenCentral() 8 | } 9 | 10 | dependencies { 11 | compile 'org.jboss.netty:netty:latest.integration' 12 | compile 'com.google.inject:guice:latest.integration' 13 | compile 'com.google.guava:guava:latest.integration' 14 | } 15 | -------------------------------------------------------------------------------- /benchmarks/netty/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | exec gradle run 6 | -------------------------------------------------------------------------------- /benchmarks/netty/src/main/java/HelloWorldServer.java: -------------------------------------------------------------------------------- 1 | import org.jboss.netty.bootstrap.ServerBootstrap; 2 | import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; 3 | 4 | import java.net.InetSocketAddress; 5 | import java.util.concurrent.Executors; 6 | 7 | /** 8 | * An HTTP server that sends back the content of the received HTTP request 9 | * in a pretty plaintext form. 10 | */ 11 | public class HelloWorldServer { 12 | 13 | private final int port; 14 | 15 | public HelloWorldServer(int port) { 16 | this.port = port; 17 | } 18 | 19 | public void run() { 20 | // Configure the server. 21 | ServerBootstrap bootstrap = new ServerBootstrap( 22 | new NioServerSocketChannelFactory( 23 | Executors.newCachedThreadPool(), 24 | Executors.newCachedThreadPool())); 25 | 26 | // Enable TCP_NODELAY to handle pipelined requests without latency. 27 | bootstrap.setOption("child.tcpNoDelay", true); 28 | 29 | // Set up the event pipeline factory. 30 | bootstrap.setPipelineFactory(new HelloWorldServerPipelineFactory()); 31 | 32 | // Bind and start to accept incoming connections. 33 | bootstrap.bind(new InetSocketAddress(port)); 34 | } 35 | 36 | public static void main(String[] args) { 37 | int port; 38 | if (args.length > 0) { 39 | port = Integer.parseInt(args[0]); 40 | } else { 41 | port = 8080; 42 | } 43 | System.out.println("Started server at http://127.1:8080/ Hit ^C to stop"); 44 | new HelloWorldServer(port).run(); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /benchmarks/netty/src/main/java/HelloWorldServerHandler.java: -------------------------------------------------------------------------------- 1 | import org.jboss.netty.buffer.ChannelBuffers; 2 | import org.jboss.netty.channel.Channel; 3 | import org.jboss.netty.channel.ChannelFuture; 4 | import org.jboss.netty.channel.ChannelFutureListener; 5 | import org.jboss.netty.channel.ChannelHandlerContext; 6 | import org.jboss.netty.channel.Channels; 7 | import org.jboss.netty.channel.ExceptionEvent; 8 | import org.jboss.netty.channel.MessageEvent; 9 | import org.jboss.netty.channel.SimpleChannelUpstreamHandler; 10 | import org.jboss.netty.handler.codec.http.DefaultHttpResponse; 11 | import org.jboss.netty.handler.codec.http.HttpRequest; 12 | import org.jboss.netty.handler.codec.http.HttpResponse; 13 | 14 | import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.*; 15 | import static org.jboss.netty.handler.codec.http.HttpHeaders.*; 16 | import static org.jboss.netty.handler.codec.http.HttpResponseStatus.*; 17 | import static org.jboss.netty.handler.codec.http.HttpVersion.*; 18 | 19 | public class HelloWorldServerHandler extends SimpleChannelUpstreamHandler { 20 | 21 | private static final byte[] CONTENT = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd' }; 22 | 23 | @Override 24 | public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { 25 | Object msg = e.getMessage(); 26 | Channel ch = e.getChannel(); 27 | if (msg instanceof HttpRequest) { 28 | HttpRequest req = (HttpRequest) msg; 29 | 30 | if (is100ContinueExpected(req)) { 31 | Channels.write(ctx, Channels.future(ch), new DefaultHttpResponse(HTTP_1_1, CONTINUE)); 32 | } 33 | 34 | boolean keepAlive = isKeepAlive(req); 35 | HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); 36 | response.setContent(ChannelBuffers.wrappedBuffer(CONTENT)); 37 | response.setHeader(CONTENT_TYPE, "text/plain"); 38 | response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes()); 39 | 40 | if (!keepAlive) { 41 | ChannelFuture f = Channels.future(ch); 42 | f.addListener(ChannelFutureListener.CLOSE); 43 | Channels.write(ctx, f, response); 44 | } else { 45 | response.setHeader(CONNECTION, Values.KEEP_ALIVE); 46 | Channels.write(ctx, Channels.future(ch), response); 47 | } 48 | } 49 | } 50 | 51 | @Override 52 | public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) 53 | throws Exception { 54 | e.getCause().printStackTrace(); 55 | e.getChannel().close(); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /benchmarks/netty/src/main/java/HelloWorldServerPipelineFactory.java: -------------------------------------------------------------------------------- 1 | import org.jboss.netty.channel.ChannelPipeline; 2 | import org.jboss.netty.channel.ChannelPipelineFactory; 3 | import org.jboss.netty.handler.codec.http.HttpContentCompressor; 4 | import org.jboss.netty.handler.codec.http.HttpRequestDecoder; 5 | import org.jboss.netty.handler.codec.http.HttpResponseEncoder; 6 | 7 | import static org.jboss.netty.channel.Channels.*; 8 | 9 | public class HelloWorldServerPipelineFactory implements ChannelPipelineFactory { 10 | public ChannelPipeline getPipeline() throws Exception { 11 | // Create a default pipeline implementation. 12 | ChannelPipeline pipeline = pipeline(); 13 | 14 | // Uncomment the following line if you want HTTPS 15 | // SSLEngine engine = SecureChatSslContextFactory.getServerContext().createSSLEngine(); 16 | // engine.setUseClientMode(false); 17 | // pipeline.addLast("ssl", new SslHandler(engine)); 18 | 19 | pipeline.addLast("decoder", new HttpRequestDecoder()); 20 | // Uncomment the following line if you don't want to handle HttpChunks. 21 | // pipeline.addLast("aggregator", new HttpChunkAggregator(1048576)); 22 | pipeline.addLast("encoder", new HttpResponseEncoder()); 23 | // Remove the following line if you don't want automatic content compression. 24 | pipeline.addLast("deflater", new HttpContentCompressor()); 25 | pipeline.addLast("handler", new HelloWorldServerHandler()); 26 | return pipeline; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /benchmarks/nginx/.gitignore: -------------------------------------------------------------------------------- 1 | /logs/ 2 | /*_temp/ 3 | -------------------------------------------------------------------------------- /benchmarks/nginx/conf/echo.conf: -------------------------------------------------------------------------------- 1 | error_log stderr error; 2 | worker_processes 4; 3 | daemon off; 4 | events { 5 | worker_connections 16384; 6 | } 7 | http { 8 | server_tokens off; 9 | resolver 127.0.0.1; 10 | access_log off; 11 | server { 12 | listen 8080; 13 | # client_body_timeout 12; 14 | # client_header_timeout 12; 15 | # keepalive_timeout 15; 16 | # send_timeout 10; 17 | location / { 18 | default_type text/html; 19 | echo 'Hello World!'; 20 | more_clear_headers 'Date'; 21 | more_clear_headers 'Server'; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /benchmarks/nginx/conf/lua.conf: -------------------------------------------------------------------------------- 1 | error_log stderr error; 2 | worker_processes 4; 3 | daemon off; 4 | events { 5 | worker_connections 16384; 6 | } 7 | http { 8 | server_tokens off; 9 | resolver 127.0.0.1; 10 | access_log off; 11 | # init_by_lua 'jit.opt.start("minstitch=10"); require "resty.core" encode = require("cjson").encode mysql = require("resty.mysql")'; 12 | init_by_lua 'jit.opt.start("minstitch=10")'; 13 | server { 14 | listen 8080; 15 | location / { 16 | default_type text/html; 17 | content_by_lua 'ngx.say("Hello World")'; 18 | more_clear_headers 'Date'; 19 | more_clear_headers 'Server'; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /benchmarks/nginx/run_echo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd $(dirname $0) 3 | [ -d logs ] || mkdir logs 4 | exec /usr/local/openresty/nginx/sbin/nginx \ 5 | -p $PWD/ \ 6 | -c conf/echo.conf 7 | -------------------------------------------------------------------------------- /benchmarks/nginx/run_lua.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cd $(dirname $0) 3 | [ -d logs ] || mkdir logs 4 | exec /usr/local/openresty/nginx/sbin/nginx \ 5 | -p $PWD/ \ 6 | -c conf/lua.conf 7 | -------------------------------------------------------------------------------- /benchmarks/nim/.gitignore: -------------------------------------------------------------------------------- 1 | /helloworldserver 2 | /nimcache/ 3 | -------------------------------------------------------------------------------- /benchmarks/nim/clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | rm -rf helloworldserver nimcache 6 | -------------------------------------------------------------------------------- /benchmarks/nim/helloworldserver.nim: -------------------------------------------------------------------------------- 1 | import asynchttpserver, asyncdispatch, strtabs, parseopt, os, osproc, sequtils, 2 | strutils, times 3 | 4 | const 5 | usage = """ 6 | Usage: helloworldserver [opts] 7 | 8 | Options: 9 | -h, --help Show this help. 10 | -f, --prefork Pre-fork using num-CPUs. 11 | -r, --reuse Re-use port. 12 | 13 | For more information read the Github readme: 14 | https://github.com/nim-lang/nimble#readme 15 | """ 16 | 17 | var 18 | prefork = false 19 | reuse = false 20 | 21 | for kind, key, val in getOpt(): 22 | case kind 23 | of cmdArgument: assert(false) # cannot happen 24 | of cmdShortOption: 25 | case key 26 | of "f": prefork = true 27 | of "r": reuse = true 28 | of "h": echo usage 29 | else: 30 | raise newException(ValueError, "Unknown option: -" & key) 31 | of cmdLongOption: 32 | case key 33 | of "fork": prefork = true 34 | of "reuse": reuse = true 35 | of "help": echo usage 36 | else: 37 | raise newException(ValueError, "Unknown option: --" & key) 38 | else: 39 | raise newException(ValueError, "Unknown option: --" & key) 40 | 41 | if not prefork: 42 | when defined(reuse): 43 | var server = newAsyncHttpServer(true, reuse) 44 | else: 45 | var server = newAsyncHttpServer(true) 46 | proc cb(req: Request) {.async.} = 47 | when not defined(nodate): 48 | let date = getTime().getGMTime().format("ddd, d MMM yyyy HH:mm:ss") & " +0000" 49 | await req.respond(Http200, "Hello World", 50 | {"Content-Type": "text/html", "Date": date}.newStringTable()) 51 | else: 52 | await req.respond(Http200, "Hello World", 53 | {"Content-Type": "text/html"}.newStringTable()) 54 | 55 | asyncCheck server.serve(Port(8080), cb) 56 | runForever() 57 | 58 | else: 59 | let numCPUs = countProcessors() 60 | var args = commandLineParams() 61 | args.insert(paramStr(0), 0) 62 | args.keepIf(proc(arg: string): bool = arg != "-f" and arg != "--prefork") 63 | args.add("--reuse") 64 | var cmds: seq[string] = @[] 65 | for cpu in 0.. ", args.join(" ") 68 | discard execProcesses(cmds, {poStdErrToStdOut, poParentStreams, poEchoCmd}) 69 | -------------------------------------------------------------------------------- /benchmarks/nim/run_mnsgc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | [ -f helloworldserver ] || \ 6 | ${NIM-nim} c -d:release --gc:markandsweep helloworldserver.nim 7 | 8 | set -x 9 | exec ./helloworldserver "$@" 10 | -------------------------------------------------------------------------------- /benchmarks/nim/run_rc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | [ -f helloworldserver ] || \ 6 | ${NIM-nim} c -d:release helloworldserver.nim 7 | 8 | set -x 9 | exec ./helloworldserver "$@" 10 | -------------------------------------------------------------------------------- /benchmarks/node/cluster.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'), 2 | cluster = require('cluster'), 3 | http = require('http'), 4 | numCPUs = require('os').cpus().length; 5 | 6 | cluster.schedulingPolicy = cluster.SCHED_NONE; 7 | http.globalAgent.maxSockets = 1024; 8 | 9 | if (cluster.isMaster) { 10 | console.log('forking on ' + numCPUs + ' CPUs'); 11 | for (var i = 0; i < numCPUs; i++) { 12 | cluster.fork(); 13 | } 14 | cluster.on('exit', function(worker, code, signal) { 15 | console.log('worker ' + worker.process.pid + ' died'); 16 | }); 17 | } else { 18 | http.createServer(function(req, res) { 19 | res.writeHead(200); 20 | res.end('Hello World'); 21 | }) 22 | .listen(8080); 23 | } 24 | -------------------------------------------------------------------------------- /benchmarks/node/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname "$0") 4 | 5 | node cluster.js 6 | -------------------------------------------------------------------------------- /benchmarks/onion/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | cd lib/onion 5 | 6 | if [ ! -x examples/hello/hello ]; then 7 | if [ ! -f ../libev/.libs/libev.a ]; then 8 | ( cd ../libev && configure && make -j8 ) 9 | fi 10 | cmake -GNinja -DLIBEV_HEADER=$PWD/../libev -DLIBEV_LIB=$PWD/../libev/.libs/libev.a -DGNUTLS_LIB=/dev/null && \ 11 | ninja examples/hello/hello 12 | fi 13 | 14 | ONION_LOG=noinfo exec examples/hello/hello 15 | -------------------------------------------------------------------------------- /benchmarks/puma/Gemfile: -------------------------------------------------------------------------------- 1 | # A sample Gemfile 2 | source "https://rubygems.org" 3 | 4 | gem "puma" 5 | -------------------------------------------------------------------------------- /benchmarks/puma/Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | puma (2.11.2) 5 | rack (>= 1.1, < 2.0) 6 | rack (1.6.1) 7 | 8 | PLATFORMS 9 | ruby 10 | 11 | DEPENDENCIES 12 | puma 13 | -------------------------------------------------------------------------------- /benchmarks/puma/config.ru: -------------------------------------------------------------------------------- 1 | run Proc.new { |env| ['200', {'Content-Type' => 'text/html'}, ['Hello World!']] } 2 | -------------------------------------------------------------------------------- /benchmarks/puma/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | . ../../common/threads.sh 6 | 7 | exec puma -t $threads:32 -w 8 -p 8080 -e production 8 | -------------------------------------------------------------------------------- /benchmarks/rust/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /*.lock 3 | -------------------------------------------------------------------------------- /benchmarks/rust/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "helloworld" 3 | version = "0.0.1" 4 | authors = ["Adam Strzelecki "] 5 | 6 | [dependencies] 7 | iron = "*" 8 | -------------------------------------------------------------------------------- /benchmarks/rust/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | [ -d target/release ] || \ 6 | cargo build --release 7 | 8 | exec ./target/release/helloworld 9 | -------------------------------------------------------------------------------- /benchmarks/rust/src/main.rs: -------------------------------------------------------------------------------- 1 | extern crate iron; 2 | 3 | use iron::prelude::*; 4 | use iron::status; 5 | use iron::Protocol; 6 | use std::net::SocketAddr; 7 | 8 | fn main() { 9 | fn hello_world(_: &mut Request) -> IronResult { 10 | Ok(Response::with((status::Ok, "Hello World!"))) 11 | } 12 | 13 | let server_details = "127.0.0.1:8080"; 14 | let server: SocketAddr = server_details.parse().unwrap(); 15 | println!("Server {}", server); 16 | Iron::new(hello_world).listen_with(server, 8, Protocol::Http).unwrap(); 17 | } 18 | -------------------------------------------------------------------------------- /benchmarks/undertow/.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /.gradle/ 3 | -------------------------------------------------------------------------------- /benchmarks/undertow/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin:'java' 2 | apply plugin:'application' 3 | 4 | mainClassName = 'HelloWorldServer' 5 | 6 | repositories { 7 | mavenCentral() 8 | } 9 | 10 | dependencies { 11 | compile 'io.undertow:undertow-core:1.0.0+' 12 | compile 'io.undertow:undertow-servlet:1.0.0+' 13 | } 14 | -------------------------------------------------------------------------------- /benchmarks/undertow/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | exec gradle run 6 | -------------------------------------------------------------------------------- /benchmarks/undertow/src/main/java/HelloWorldServer.java: -------------------------------------------------------------------------------- 1 | import io.undertow.Undertow; 2 | import io.undertow.server.HttpHandler; 3 | import io.undertow.server.HttpServerExchange; 4 | import io.undertow.util.Headers; 5 | 6 | public class HelloWorldServer { 7 | 8 | public static void main(final String[] args) { 9 | Undertow server = Undertow.builder() 10 | .addListener(8080, "localhost") 11 | .setHandler(new HttpHandler() { 12 | @Override 13 | public void handleRequest(final HttpServerExchange exchange) throws Exception { 14 | exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain"); 15 | exchange.getResponseSender().send("Hello World"); 16 | } 17 | }).build(); 18 | server.start(); 19 | 20 | System.out.println("Started server at http://127.1:8080/ Hit ^C to stop"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /benchmarks/vibed/.gitignore: -------------------------------------------------------------------------------- 1 | /vibed 2 | /dub.selections.json 3 | /.dub 4 | -------------------------------------------------------------------------------- /benchmarks/vibed/dub.sdl: -------------------------------------------------------------------------------- 1 | name "vibed" 2 | description "A simple vibe.d server application." 3 | copyright "Copyright © 2015, ono" 4 | authors "ono" 5 | dependency "vibe-d" version="~>0.7.23" 6 | versions "VibeDefaultMain" 7 | -------------------------------------------------------------------------------- /benchmarks/vibed/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname "$0") 4 | 5 | set -x 6 | exec dub run -b release 7 | -------------------------------------------------------------------------------- /benchmarks/vibed/source/app.d: -------------------------------------------------------------------------------- 1 | import vibe.d; 2 | 3 | shared static this() 4 | { 5 | auto settings = new HTTPServerSettings; 6 | settings.options |= HTTPServerOption.distribute; 7 | settings.port = 8080; 8 | settings.bindAddresses = ["::1", "127.0.0.1"]; 9 | listenHTTP(settings, &hello); 10 | 11 | logInfo("Please open http://127.0.0.1:8080/ in your browser."); 12 | } 13 | 14 | void hello(HTTPServerRequest req, HTTPServerResponse res) 15 | { 16 | res.writeBody("Hello World"); 17 | } 18 | -------------------------------------------------------------------------------- /common/sysctl-optimized-ubuntu14.04-restore.conf: -------------------------------------------------------------------------------- 1 | fs.file-max = 3268202 2 | net.core.netdev_max_backlog = 1000 3 | net.core.optmem_max = 20480 4 | net.core.rmem_default = 212992 5 | net.core.rmem_max = 212992 6 | net.core.somaxconn = 128 7 | net.core.wmem_default = 212992 8 | net.core.wmem_max = 212992 9 | net.ipv4.conf.all.rp_filter = 1 10 | net.ipv4.conf.default.rp_filter = 1 11 | net.ipv4.ip_local_port_range = 32768 61000 12 | net.ipv4.tcp_congestion_control = cubic 13 | net.ipv4.tcp_ecn = 2 14 | net.ipv4.tcp_max_syn_backlog = 1024 15 | net.ipv4.tcp_max_tw_buckets = 131072 16 | net.ipv4.tcp_mem = 768273 1024364 1536546 17 | net.ipv4.tcp_rmem = 4096 87380 6291456 18 | net.ipv4.tcp_sack = 1 19 | net.ipv4.tcp_syncookies = 1 20 | net.ipv4.tcp_timestamps = 1 21 | net.ipv4.tcp_wmem = 4096 16384 4194304 22 | net.ipv4.tcp_tw_reuse = 0 23 | net.ipv4.tcp_tw_recycle = 0 24 | -------------------------------------------------------------------------------- /common/sysctl-optimized.conf: -------------------------------------------------------------------------------- 1 | # "Performance Scalability of a Multi-Core Web Server", Nov 2007 2 | # Bryan Veal and Annie Foong, Intel Corporation, Page 4/10 3 | fs.file-max = 5000000 4 | net.core.netdev_max_backlog = 400000 5 | net.core.optmem_max = 10000000 6 | net.core.rmem_default = 10000000 7 | net.core.rmem_max = 10000000 8 | net.core.somaxconn = 30000 9 | net.core.wmem_default = 10000000 10 | net.core.wmem_max = 10000000 11 | net.ipv4.conf.all.rp_filter = 1 12 | net.ipv4.conf.default.rp_filter = 1 13 | net.ipv4.ip_local_port_range = 1024 65535 14 | net.ipv4.tcp_congestion_control = bic 15 | net.ipv4.tcp_ecn = 0 16 | net.ipv4.tcp_max_syn_backlog = 12000 17 | net.ipv4.tcp_max_tw_buckets = 2000000 18 | net.ipv4.tcp_mem = 30000000 30000000 30000000 19 | net.ipv4.tcp_rmem = 30000000 30000000 30000000 20 | net.ipv4.tcp_sack = 1 21 | net.ipv4.tcp_syncookies = 0 22 | net.ipv4.tcp_timestamps = 1 23 | net.ipv4.tcp_wmem = 30000000 30000000 30000000 24 | 25 | # optionally, avoid TIME_WAIT states on localhost no-HTTP Keep-Alive tests: 26 | # "error: connect() failed: Cannot assign requested address (99)" 27 | # On Linux, the 2MSL time is hardcoded to 60 seconds in /include/net/tcp.h: 28 | # #define TCP_TIMEWAIT_LEN (60*HZ) 29 | # The option below is safe to use: 30 | net.ipv4.tcp_tw_reuse = 1 31 | 32 | # The option below lets you reduce TIME_WAITs further 33 | # but this option is for benchmarks, NOT for production (NAT issues) 34 | net.ipv4.tcp_tw_recycle = 1 35 | -------------------------------------------------------------------------------- /common/threads.sh: -------------------------------------------------------------------------------- 1 | if [ -f /proc/cpuinfo ]; then 2 | threads=$(cat /proc/cpuinfo | grep -i 'core id' | wc -l) 3 | elif [ -d /System/Library ]; then 4 | threads=$(sysctl machdep.cpu.thread_count | cut -f2 -d\ ) 5 | else 6 | threads=4 7 | fi 8 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/cowboy_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 0.93ms 1.22ms 29.77ms 87.03% 5 | Req/Sec 13.72k 6.35k 40.15k 65.32% 6 | Latency Distribution 7 | 50% 494.00us 8 | 75% 1.26ms 9 | 90% 2.55ms 10 | 99% 5.41ms 11 | 3286243 requests in 20.10s, 482.48MB read 12 | Requests/sec: 163521.19 13 | Transfer/sec: 24.01MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/cowboy_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 0.93ms 1.20ms 24.37ms 86.66% 5 | Req/Sec 13.66k 6.45k 36.26k 65.75% 6 | Latency Distribution 7 | 50% 497.00us 8 | 75% 1.26ms 9 | 90% 2.55ms 10 | 99% 5.32ms 11 | 3273226 requests in 20.09s, 480.57MB read 12 | Requests/sec: 162937.90 13 | Transfer/sec: 23.92MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/cowboy_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 0.94ms 1.22ms 24.66ms 86.90% 5 | Req/Sec 13.70k 6.48k 35.58k 66.03% 6 | Latency Distribution 7 | 50% 493.00us 8 | 75% 1.28ms 9 | 90% 2.58ms 10 | 99% 5.36ms 11 | 3283346 requests in 20.09s, 482.06MB read 12 | Requests/sec: 163406.85 13 | Transfer/sec: 23.99MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/cowboy_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 0.94ms 1.22ms 25.37ms 86.87% 5 | Req/Sec 13.66k 6.45k 40.21k 64.67% 6 | Latency Distribution 7 | 50% 497.00us 8 | 75% 1.27ms 9 | 90% 2.59ms 10 | 99% 5.38ms 11 | 3272601 requests in 20.10s, 480.48MB read 12 | Requests/sec: 162832.13 13 | Transfer/sec: 23.91MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/crow_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 594.83us 1.17ms 28.00ms 93.37% 5 | Req/Sec 21.12k 7.03k 93.54k 81.72% 6 | Latency Distribution 7 | 50% 345.00us 8 | 75% 429.00us 9 | 90% 0.90ms 10 | 99% 5.61ms 11 | 5051261 requests in 20.10s, 616.61MB read 12 | Requests/sec: 251341.18 13 | Transfer/sec: 30.68MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/crow_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 590.52us 1.15ms 23.99ms 93.44% 5 | Req/Sec 21.16k 7.27k 153.52k 82.80% 6 | Latency Distribution 7 | 50% 343.00us 8 | 75% 446.00us 9 | 90% 0.91ms 10 | 99% 5.62ms 11 | 5059465 requests in 20.10s, 617.61MB read 12 | Requests/sec: 251737.31 13 | Transfer/sec: 30.73MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/crow_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 598.40us 1.15ms 32.03ms 93.03% 5 | Req/Sec 21.06k 5.90k 58.73k 79.96% 6 | Latency Distribution 7 | 50% 342.00us 8 | 75% 445.00us 9 | 90% 1.03ms 10 | 99% 5.41ms 11 | 5033608 requests in 20.03s, 614.45MB read 12 | Requests/sec: 251283.40 13 | Transfer/sec: 30.67MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/crow_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.23ms 2.48ms 27.99ms 90.77% 5 | Req/Sec 21.52k 11.55k 53.78k 65.20% 6 | Latency Distribution 7 | 50% 252.00us 8 | 75% 620.00us 9 | 90% 3.59ms 10 | 99% 12.28ms 11 | 5152425 requests in 20.08s, 628.96MB read 12 | Requests/sec: 256552.68 13 | Transfer/sec: 31.32MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go-fasthttp_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 493.52us 1.25ms 36.02ms 92.79% 5 | Req/Sec 40.52k 6.46k 98.82k 74.08% 6 | Latency Distribution 7 | 50% 155.00us 8 | 75% 293.00us 9 | 90% 1.12ms 10 | 99% 5.62ms 11 | 9706632 requests in 20.09s, 1.32GB read 12 | Requests/sec: 483117.16 13 | Transfer/sec: 67.27MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go-fasthttp_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 470.75us 1.23ms 44.07ms 93.26% 5 | Req/Sec 40.54k 6.06k 91.03k 72.54% 6 | Latency Distribution 7 | 50% 157.00us 8 | 75% 289.00us 9 | 90% 1.01ms 10 | 99% 5.32ms 11 | 9710005 requests in 20.07s, 1.32GB read 12 | Requests/sec: 483764.96 13 | Transfer/sec: 67.36MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go-fasthttp_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 477.37us 1.07ms 29.41ms 91.77% 5 | Req/Sec 40.56k 6.19k 71.60k 70.67% 6 | Latency Distribution 7 | 50% 153.00us 8 | 75% 295.00us 9 | 90% 1.20ms 10 | 99% 5.24ms 11 | 9709185 requests in 20.06s, 1.32GB read 12 | Requests/sec: 483937.46 13 | Transfer/sec: 67.38MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go-fasthttp_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 477.81us 1.15ms 40.57ms 92.34% 5 | Req/Sec 40.70k 6.63k 90.89k 72.38% 6 | Latency Distribution 7 | 50% 153.00us 8 | 75% 293.00us 9 | 90% 1.14ms 10 | 99% 5.26ms 11 | 9748240 requests in 20.09s, 1.33GB read 12 | Requests/sec: 485185.24 13 | Transfer/sec: 67.56MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go-fasthttp_prefork_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 353.11us 612.63us 7.99ms 91.80% 5 | Req/Sec 37.33k 20.00k 150.93k 58.68% 6 | Latency Distribution 7 | 50% 163.00us 8 | 75% 301.00us 9 | 90% 777.00us 10 | 99% 3.38ms 11 | 8920046 requests in 20.10s, 1.21GB read 12 | Requests/sec: 443794.44 13 | Transfer/sec: 61.79MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go-fasthttp_prefork_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 245.76us 290.40us 6.76ms 92.11% 5 | Req/Sec 37.10k 15.03k 136.54k 62.49% 6 | Latency Distribution 7 | 50% 171.00us 8 | 75% 292.00us 9 | 90% 475.00us 10 | 99% 1.54ms 11 | 8865973 requests in 20.10s, 1.21GB read 12 | Requests/sec: 441132.12 13 | Transfer/sec: 61.42MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go-fasthttp_prefork_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 328.58us 536.45us 8.06ms 91.59% 5 | Req/Sec 37.45k 20.86k 113.19k 56.93% 6 | Latency Distribution 7 | 50% 162.00us 8 | 75% 302.00us 9 | 90% 734.00us 10 | 99% 2.89ms 11 | 8947196 requests in 20.10s, 1.22GB read 12 | Requests/sec: 445151.74 13 | Transfer/sec: 61.98MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go-fasthttp_prefork_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 305.42us 472.71us 10.61ms 91.76% 5 | Req/Sec 37.47k 20.22k 120.32k 58.23% 6 | Latency Distribution 7 | 50% 163.00us 8 | 75% 307.00us 9 | 90% 660.00us 10 | 99% 2.48ms 11 | 8951166 requests in 20.10s, 1.22GB read 12 | Requests/sec: 445335.47 13 | Transfer/sec: 62.01MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 457.64us 511.47us 7.80ms 87.97% 5 | Req/Sec 22.59k 2.58k 39.06k 70.21% 6 | Latency Distribution 7 | 50% 271.00us 8 | 75% 552.00us 9 | 90% 1.08ms 10 | 99% 2.55ms 11 | 5400667 requests in 20.04s, 685.01MB read 12 | Requests/sec: 269515.34 13 | Transfer/sec: 34.18MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 458.82us 516.19us 8.06ms 88.13% 5 | Req/Sec 22.58k 2.57k 29.99k 70.08% 6 | Latency Distribution 7 | 50% 272.00us 8 | 75% 550.00us 9 | 90% 1.08ms 10 | 99% 2.59ms 11 | 5398601 requests in 20.03s, 684.75MB read 12 | Requests/sec: 269502.22 13 | Transfer/sec: 34.18MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 456.33us 509.45us 8.91ms 88.04% 5 | Req/Sec 22.61k 2.71k 32.67k 70.00% 6 | Latency Distribution 7 | 50% 273.00us 8 | 75% 546.00us 9 | 90% 1.07ms 10 | 99% 2.55ms 11 | 5404628 requests in 20.03s, 685.52MB read 12 | Requests/sec: 269852.55 13 | Transfer/sec: 34.23MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/go_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 453.06us 503.43us 7.27ms 88.11% 5 | Req/Sec 22.65k 2.61k 33.83k 71.96% 6 | Latency Distribution 7 | 50% 274.00us 8 | 75% 539.00us 9 | 90% 1.05ms 10 | 99% 2.52ms 11 | 5414253 requests in 20.03s, 686.74MB read 12 | Requests/sec: 270252.99 13 | Transfer/sec: 34.28MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/hapi_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 40.22ms 1.44ms 61.78ms 95.78% 5 | Req/Sec 199.48 19.55 242.00 66.75% 6 | Latency Distribution 7 | 50% 40.00ms 8 | 75% 40.01ms 9 | 90% 40.04ms 10 | 99% 48.00ms 11 | 47714 requests in 20.05s, 9.03MB read 12 | Requests/sec: 2380.29 13 | Transfer/sec: 461.11KB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/hapi_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 40.04ms 1.73ms 56.06ms 97.77% 5 | Req/Sec 200.44 15.41 242.00 66.29% 6 | Latency Distribution 7 | 50% 40.00ms 8 | 75% 40.01ms 9 | 90% 40.03ms 10 | 99% 44.04ms 11 | 47944 requests in 20.02s, 9.07MB read 12 | Requests/sec: 2394.77 13 | Transfer/sec: 463.90KB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/hapi_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 40.02ms 1.74ms 60.06ms 98.07% 5 | Req/Sec 200.50 19.95 242.00 69.62% 6 | Latency Distribution 7 | 50% 40.00ms 8 | 75% 40.01ms 9 | 90% 40.03ms 10 | 99% 44.01ms 11 | 47948 requests in 20.01s, 9.07MB read 12 | Requests/sec: 2395.64 13 | Transfer/sec: 464.08KB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/hapi_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 39.99ms 1.73ms 55.99ms 98.37% 5 | Req/Sec 200.59 21.44 242.00 72.12% 6 | Latency Distribution 7 | 50% 39.99ms 8 | 75% 40.01ms 9 | 90% 40.03ms 10 | 99% 44.00ms 11 | 47975 requests in 20.02s, 9.08MB read 12 | Requests/sec: 2396.23 13 | Transfer/sec: 464.19KB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/jester_mnsgc_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.16ms 544.89us 46.33ms 99.89% 5 | Req/Sec 6.98k 154.46 7.29k 99.42% 6 | Latency Distribution 7 | 50% 1.04ms 8 | 75% 1.45ms 9 | 90% 1.49ms 10 | 99% 1.50ms 11 | 1674740 requests in 20.10s, 119.79MB read 12 | Requests/sec: 83320.83 13 | Transfer/sec: 5.96MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/jester_mnsgc_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.15ms 283.44us 27.75ms 75.39% 5 | Req/Sec 7.02k 93.10 8.31k 95.56% 6 | Latency Distribution 7 | 50% 1.04ms 8 | 75% 1.06ms 9 | 90% 1.47ms 10 | 99% 1.50ms 11 | 1683411 requests in 20.10s, 120.41MB read 12 | Requests/sec: 83752.65 13 | Transfer/sec: 5.99MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/jester_mnsgc_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.16ms 293.36us 27.99ms 76.34% 5 | Req/Sec 6.96k 83.38 8.61k 99.46% 6 | Latency Distribution 7 | 50% 1.05ms 8 | 75% 1.06ms 9 | 90% 1.50ms 10 | 99% 1.51ms 11 | 1672346 requests in 20.10s, 119.62MB read 12 | Requests/sec: 83202.80 13 | Transfer/sec: 5.95MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/jester_mnsgc_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.16ms 285.28us 28.01ms 74.93% 5 | Req/Sec 6.95k 80.68 8.34k 99.54% 6 | Latency Distribution 7 | 50% 1.05ms 8 | 75% 1.38ms 9 | 90% 1.48ms 10 | 99% 1.49ms 11 | 1668262 requests in 20.10s, 119.32MB read 12 | Requests/sec: 82998.15 13 | Transfer/sec: 5.94MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/jester_rc_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.42ms 2.25ms 106.00ms 81.64% 5 | Req/Sec 3.59k 422.77 14.91k 98.83% 6 | Latency Distribution 7 | 50% 1.38ms 8 | 75% 2.96ms 9 | 90% 5.25ms 10 | 99% 5.42ms 11 | 858210 requests in 20.10s, 61.38MB read 12 | Requests/sec: 42698.05 13 | Transfer/sec: 3.05MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/jester_rc_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.42ms 1.60ms 55.84ms 81.91% 5 | Req/Sec 3.52k 108.42 5.29k 86.88% 6 | Latency Distribution 7 | 50% 1.42ms 8 | 75% 3.02ms 9 | 90% 5.36ms 10 | 99% 5.50ms 11 | 841121 requests in 20.01s, 60.16MB read 12 | Requests/sec: 42039.82 13 | Transfer/sec: 3.01MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/jester_rc_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.45ms 1.62ms 57.59ms 81.35% 5 | Req/Sec 3.46k 515.77 21.58k 99.54% 6 | Latency Distribution 7 | 50% 1.47ms 8 | 75% 2.96ms 9 | 90% 5.36ms 10 | 99% 5.51ms 11 | 826218 requests in 20.10s, 59.10MB read 12 | Requests/sec: 41105.96 13 | Transfer/sec: 2.94MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/jester_rc_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.44ms 1.61ms 56.94ms 81.32% 5 | Req/Sec 3.46k 763.17 40.51k 99.67% 6 | Latency Distribution 7 | 50% 1.47ms 8 | 75% 2.96ms 9 | 90% 5.35ms 10 | 99% 5.49ms 11 | 827993 requests in 20.10s, 59.22MB read 12 | Requests/sec: 41194.61 13 | Transfer/sec: 2.95MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/kore_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 3.12ms 29.43ms 546.03ms 98.81% 5 | Req/Sec 48.40k 20.87k 126.83k 75.02% 6 | Latency Distribution 7 | 50% 127.00us 8 | 75% 216.00us 9 | 90% 627.00us 10 | 99% 87.03ms 11 | 11434409 requests in 20.04s, 2.03GB read 12 | Requests/sec: 570708.61 13 | Transfer/sec: 103.96MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/kore_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 544.27us 4.09ms 197.09ms 99.25% 5 | Req/Sec 48.05k 21.83k 118.77k 76.79% 6 | Latency Distribution 7 | 50% 125.00us 8 | 75% 233.00us 9 | 90% 790.00us 10 | 99% 3.99ms 11 | 11486372 requests in 20.05s, 2.04GB read 12 | Requests/sec: 572781.77 13 | Transfer/sec: 104.33MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/kore_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 578.58us 4.11ms 195.50ms 99.18% 5 | Req/Sec 47.94k 23.03k 121.39k 75.29% 6 | Latency Distribution 7 | 50% 122.00us 8 | 75% 221.00us 9 | 90% 0.98ms 10 | 99% 4.22ms 11 | 11459856 requests in 20.06s, 2.04GB read 12 | Requests/sec: 571325.96 13 | Transfer/sec: 104.07MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/kore_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 661.05us 5.08ms 195.86ms 99.41% 5 | Req/Sec 47.81k 20.95k 128.99k 72.36% 6 | Latency Distribution 7 | 50% 123.00us 8 | 75% 223.00us 9 | 90% 1.15ms 10 | 99% 4.50ms 11 | 11422478 requests in 20.10s, 2.03GB read 12 | Requests/sec: 568318.57 13 | Transfer/sec: 103.52MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/microhttpd_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 224.85us 349.15us 12.34ms 93.59% 5 | Req/Sec 44.64k 11.08k 208.10k 71.26% 6 | Latency Distribution 7 | 50% 133.00us 8 | 75% 214.00us 9 | 90% 404.00us 10 | 99% 1.83ms 11 | 10666952 requests in 20.10s, 1.36GB read 12 | Requests/sec: 530708.86 13 | Transfer/sec: 69.34MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/microhttpd_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 288.70us 506.84us 13.24ms 91.89% 5 | Req/Sec 44.57k 17.98k 88.01k 64.92% 6 | Latency Distribution 7 | 50% 126.00us 8 | 75% 232.00us 9 | 90% 646.00us 10 | 99% 2.74ms 11 | 10648600 requests in 20.03s, 1.36GB read 12 | Requests/sec: 531719.60 13 | Transfer/sec: 69.47MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/microhttpd_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 250.26us 418.60us 10.80ms 92.99% 5 | Req/Sec 44.71k 14.99k 173.32k 70.61% 6 | Latency Distribution 7 | 50% 132.00us 8 | 75% 219.00us 9 | 90% 480.00us 10 | 99% 2.31ms 11 | 10689000 requests in 20.10s, 1.36GB read 12 | Requests/sec: 531802.77 13 | Transfer/sec: 69.48MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/microhttpd_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 199.51us 252.87us 8.74ms 93.40% 5 | Req/Sec 44.84k 10.60k 117.81k 72.84% 6 | Latency Distribution 7 | 50% 140.00us 8 | 75% 210.00us 9 | 90% 349.00us 10 | 99% 1.28ms 11 | 10725583 requests in 20.10s, 1.37GB read 12 | Requests/sec: 533626.15 13 | Transfer/sec: 69.72MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/netty_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 354.21us 2.06ms 204.38ms 98.22% 5 | Req/Sec 35.42k 4.28k 68.45k 92.88% 6 | Latency Distribution 7 | 50% 167.00us 8 | 75% 304.00us 9 | 90% 552.00us 10 | 99% 4.14ms 11 | 8456575 requests in 20.10s, 806.48MB read 12 | Requests/sec: 420722.72 13 | Transfer/sec: 40.12MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/netty_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 356.29us 2.07ms 202.48ms 98.29% 5 | Req/Sec 35.56k 4.66k 159.19k 94.50% 6 | Latency Distribution 7 | 50% 166.00us 8 | 75% 305.00us 9 | 90% 555.00us 10 | 99% 4.01ms 11 | 8492799 requests in 20.10s, 809.94MB read 12 | Requests/sec: 422542.72 13 | Transfer/sec: 40.30MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/netty_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 361.01us 1.80ms 202.25ms 97.93% 5 | Req/Sec 36.09k 5.59k 106.31k 95.42% 6 | Latency Distribution 7 | 50% 164.00us 8 | 75% 301.00us 9 | 90% 559.00us 10 | 99% 4.49ms 11 | 8471285 requests in 20.10s, 807.88MB read 12 | Requests/sec: 421462.17 13 | Transfer/sec: 40.19MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/netty_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 345.96us 1.72ms 201.44ms 98.01% 5 | Req/Sec 35.52k 4.84k 130.00k 94.05% 6 | Latency Distribution 7 | 50% 167.00us 8 | 75% 303.00us 9 | 90% 549.00us 10 | 99% 4.08ms 11 | 8493648 requests in 20.10s, 810.02MB read 12 | Requests/sec: 422580.32 13 | Transfer/sec: 40.30MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nginx_echo_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 4.05ms 6.93ms 124.57ms 83.93% 5 | Req/Sec 32.06k 4.50k 86.27k 92.01% 6 | Latency Distribution 7 | 50% 68.00us 8 | 75% 6.90ms 9 | 90% 13.84ms 10 | 99% 24.24ms 11 | 7665344 requests in 20.10s, 869.55MB read 12 | Requests/sec: 381367.99 13 | Transfer/sec: 43.26MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nginx_echo_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 4.46ms 7.48ms 76.65ms 83.87% 5 | Req/Sec 31.26k 6.33k 199.66k 93.71% 6 | Latency Distribution 7 | 50% 63.00us 8 | 75% 7.73ms 9 | 90% 14.91ms 10 | 99% 28.72ms 11 | 7473054 requests in 20.10s, 847.74MB read 12 | Requests/sec: 371799.56 13 | Transfer/sec: 42.18MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nginx_echo_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 4.32ms 7.32ms 78.19ms 83.90% 5 | Req/Sec 31.44k 5.86k 178.36k 94.71% 6 | Latency Distribution 7 | 50% 65.00us 8 | 75% 7.45ms 9 | 90% 14.55ms 10 | 99% 25.70ms 11 | 7517846 requests in 20.10s, 852.82MB read 12 | Requests/sec: 374031.05 13 | Transfer/sec: 42.43MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nginx_echo_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 4.22ms 7.16ms 77.21ms 83.83% 5 | Req/Sec 31.83k 4.86k 119.87k 96.26% 6 | Latency Distribution 7 | 50% 64.00us 8 | 75% 7.29ms 9 | 90% 14.26ms 10 | 99% 22.53ms 11 | 7615186 requests in 20.10s, 863.86MB read 12 | Requests/sec: 378883.03 13 | Transfer/sec: 42.98MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nginx_lua_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 7.18ms 10.57ms 140.67ms 80.85% 5 | Req/Sec 21.65k 2.91k 71.38k 95.33% 6 | Latency Distribution 7 | 50% 59.00us 8 | 75% 13.60ms 9 | 90% 24.26ms 10 | 99% 32.50ms 11 | 5169719 requests in 20.10s, 581.52MB read 12 | Requests/sec: 257212.15 13 | Transfer/sec: 28.93MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nginx_lua_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 7.36ms 11.56ms 114.38ms 82.77% 5 | Req/Sec 21.75k 3.06k 26.18k 93.00% 6 | Latency Distribution 7 | 50% 59.00us 8 | 75% 13.47ms 9 | 90% 24.00ms 10 | 99% 43.11ms 11 | 5192502 requests in 20.00s, 584.08MB read 12 | Requests/sec: 259564.41 13 | Transfer/sec: 29.20MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nginx_lua_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 6.83ms 11.09ms 114.31ms 83.40% 5 | Req/Sec 22.65k 4.87k 203.77k 94.67% 6 | Latency Distribution 7 | 50% 65.00us 8 | 75% 12.28ms 9 | 90% 22.35ms 10 | 99% 43.35ms 11 | 5411049 requests in 20.10s, 608.67MB read 12 | Requests/sec: 269204.54 13 | Transfer/sec: 30.28MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nginx_lua_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 7.15ms 11.21ms 113.23ms 82.51% 5 | Req/Sec 21.88k 2.77k 27.28k 93.12% 6 | Latency Distribution 7 | 50% 62.00us 8 | 75% 13.14ms 9 | 90% 23.57ms 10 | 99% 33.56ms 11 | 5224445 requests in 20.01s, 587.68MB read 12 | Requests/sec: 261144.31 13 | Transfer/sec: 29.38MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_mnsgc_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 1 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.22ms 200.35us 5.13ms 78.88% 5 | Req/Sec 82.38k 3.76k 84.68k 97.00% 6 | Latency Distribution 7 | 50% 1.11ms 8 | 75% 1.39ms 9 | 90% 1.51ms 10 | 99% 1.64ms 11 | 1639080 requests in 20.01s, 178.20MB read 12 | Requests/sec: 81933.50 13 | Transfer/sec: 8.91MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_mnsgc_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 1 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.15ms 145.47us 2.37ms 71.55% 5 | Req/Sec 87.18k 512.28 88.30k 67.50% 6 | Latency Distribution 7 | 50% 1.06ms 8 | 75% 1.36ms 9 | 90% 1.38ms 10 | 99% 1.40ms 11 | 1734974 requests in 20.00s, 188.62MB read 12 | Requests/sec: 86741.06 13 | Transfer/sec: 9.43MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_mnsgc_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 1 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.17ms 145.30us 2.41ms 71.58% 5 | Req/Sec 85.45k 486.48 86.25k 72.00% 6 | Latency Distribution 7 | 50% 1.09ms 8 | 75% 1.39ms 9 | 90% 1.40ms 10 | 99% 1.42ms 11 | 1700433 requests in 20.00s, 184.87MB read 12 | Requests/sec: 85015.69 13 | Transfer/sec: 9.24MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_mnsgc_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 1 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.16ms 144.03us 2.17ms 71.51% 5 | Req/Sec 86.69k 480.06 87.56k 58.00% 6 | Latency Distribution 7 | 50% 1.07ms 8 | 75% 1.37ms 9 | 90% 1.39ms 10 | 99% 1.40ms 11 | 1724687 requests in 20.00s, 187.51MB read 12 | Requests/sec: 86227.27 13 | Transfer/sec: 9.37MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_mnsgc_prefork_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 363.89us 614.15us 16.60ms 92.36% 5 | Req/Sec 33.67k 15.21k 80.69k 64.17% 6 | Latency Distribution 7 | 50% 164.00us 8 | 75% 313.00us 9 | 90% 809.00us 10 | 99% 3.30ms 11 | 8045040 requests in 20.05s, 0.85GB read 12 | Requests/sec: 401310.39 13 | Transfer/sec: 43.63MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_mnsgc_prefork_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 484.03us 0.89ms 21.11ms 90.42% 5 | Req/Sec 33.87k 17.24k 71.86k 62.54% 6 | Latency Distribution 7 | 50% 158.00us 8 | 75% 331.00us 9 | 90% 1.28ms 10 | 99% 4.00ms 11 | 8092439 requests in 20.06s, 0.86GB read 12 | Requests/sec: 403495.31 13 | Transfer/sec: 43.87MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_mnsgc_prefork_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 572.00us 1.01ms 27.17ms 88.26% 5 | Req/Sec 33.82k 20.11k 80.79k 57.62% 6 | Latency Distribution 7 | 50% 149.00us 8 | 75% 436.00us 9 | 90% 1.95ms 10 | 99% 4.29ms 11 | 8084397 requests in 20.06s, 0.86GB read 12 | Requests/sec: 402924.45 13 | Transfer/sec: 43.81MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_mnsgc_prefork_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 471.22us 0.88ms 28.69ms 90.86% 5 | Req/Sec 33.91k 18.02k 76.23k 61.42% 6 | Latency Distribution 7 | 50% 155.00us 8 | 75% 356.00us 9 | 90% 1.23ms 10 | 99% 3.98ms 11 | 8106943 requests in 20.06s, 0.86GB read 12 | Requests/sec: 404040.12 13 | Transfer/sec: 43.93MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_rc_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 1 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.11ms 698.38us 9.55ms 91.88% 5 | Req/Sec 48.07k 2.56k 50.04k 94.00% 6 | Latency Distribution 7 | 50% 1.87ms 8 | 75% 1.89ms 9 | 90% 2.34ms 10 | 99% 4.45ms 11 | 957087 requests in 20.01s, 104.05MB read 12 | Requests/sec: 47833.91 13 | Transfer/sec: 5.20MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_rc_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 1 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.09ms 670.41us 4.51ms 92.47% 5 | Req/Sec 48.42k 366.44 49.49k 64.50% 6 | Latency Distribution 7 | 50% 1.87ms 8 | 75% 1.89ms 9 | 90% 2.34ms 10 | 99% 4.43ms 11 | 962949 requests in 20.00s, 104.69MB read 12 | Requests/sec: 48141.58 13 | Transfer/sec: 5.23MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_rc_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 1 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.96ms 813.96us 30.46ms 87.78% 5 | Req/Sec 53.12k 753.50 55.10k 70.50% 6 | Latency Distribution 7 | 50% 1.67ms 8 | 75% 1.69ms 9 | 90% 2.82ms 10 | 99% 4.76ms 11 | 1056940 requests in 20.00s, 114.91MB read 12 | Requests/sec: 52843.41 13 | Transfer/sec: 5.75MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_rc_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 1 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.14ms 1.03ms 52.58ms 89.59% 5 | Req/Sec 48.66k 446.06 49.24k 73.00% 6 | Latency Distribution 7 | 50% 1.85ms 8 | 75% 1.87ms 9 | 90% 3.18ms 10 | 99% 5.30ms 11 | 968238 requests in 20.00s, 105.27MB read 12 | Requests/sec: 48408.19 13 | Transfer/sec: 5.26MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_rc_prefork_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.44ms 2.81ms 35.23ms 88.66% 5 | Req/Sec 66.84k 12.91k 91.91k 69.25% 6 | Latency Distribution 7 | 50% 239.00us 8 | 75% 1.07ms 9 | 90% 4.83ms 10 | 99% 13.48ms 11 | 5327895 requests in 20.04s, 579.24MB read 12 | Requests/sec: 265847.70 13 | Transfer/sec: 28.90MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_rc_prefork_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.61ms 3.14ms 46.42ms 88.36% 5 | Req/Sec 68.10k 13.97k 95.36k 68.50% 6 | Latency Distribution 7 | 50% 216.00us 8 | 75% 1.36ms 9 | 90% 5.47ms 10 | 99% 14.94ms 11 | 5427823 requests in 20.04s, 590.11MB read 12 | Requests/sec: 270885.15 13 | Transfer/sec: 29.45MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_rc_prefork_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.45ms 2.85ms 32.78ms 88.71% 5 | Req/Sec 67.24k 14.04k 97.31k 68.88% 6 | Latency Distribution 7 | 50% 233.00us 8 | 75% 1.13ms 9 | 90% 4.85ms 10 | 99% 13.77ms 11 | 5362464 requests in 20.05s, 583.00MB read 12 | Requests/sec: 267422.78 13 | Transfer/sec: 29.07MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/nim_rc_prefork_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.34ms 2.61ms 35.66ms 88.75% 5 | Req/Sec 67.11k 12.80k 94.27k 70.00% 6 | Latency Distribution 7 | 50% 246.00us 8 | 75% 0.98ms 9 | 90% 4.44ms 10 | 99% 12.42ms 11 | 5350068 requests in 20.06s, 581.65MB read 12 | Requests/sec: 266709.46 13 | Transfer/sec: 29.00MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/node_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.36ms 1.83ms 32.06ms 89.39% 5 | Req/Sec 8.84k 6.13k 60.84k 63.52% 6 | Latency Distribution 7 | 50% 738.00us 8 | 75% 1.96ms 9 | 90% 3.59ms 10 | 99% 9.34ms 11 | 2115139 requests in 20.09s, 260.21MB read 12 | Requests/sec: 105297.37 13 | Transfer/sec: 12.95MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/node_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.39ms 1.88ms 31.95ms 88.53% 5 | Req/Sec 9.17k 7.35k 39.06k 80.04% 6 | Latency Distribution 7 | 50% 617.00us 8 | 75% 2.14ms 9 | 90% 3.96ms 10 | 99% 9.58ms 11 | 2191689 requests in 20.05s, 269.63MB read 12 | Requests/sec: 109338.05 13 | Transfer/sec: 13.45MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/node_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.42ms 2.04ms 28.72ms 88.99% 5 | Req/Sec 9.33k 7.13k 43.96k 59.17% 6 | Latency Distribution 7 | 50% 634.00us 8 | 75% 2.16ms 9 | 90% 3.96ms 10 | 99% 11.42ms 11 | 2229953 requests in 20.05s, 274.34MB read 12 | Requests/sec: 111232.89 13 | Transfer/sec: 13.68MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/node_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.48ms 2.20ms 33.18ms 88.59% 5 | Req/Sec 9.41k 6.74k 46.14k 60.82% 6 | Latency Distribution 7 | 50% 576.00us 8 | 75% 2.17ms 9 | 90% 3.96ms 10 | 99% 11.98ms 11 | 2252904 requests in 20.10s, 277.16MB read 12 | Requests/sec: 112085.99 13 | Transfer/sec: 13.79MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/onion_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 6.22ms 71.00ms 1.66s 98.95% 5 | Req/Sec 40.12k 12.86k 94.48k 78.23% 6 | Latency Distribution 7 | 50% 162.00us 8 | 75% 214.00us 9 | 90% 633.00us 10 | 99% 105.21ms 11 | 9578639 requests in 20.03s, 1.76GB read 12 | Requests/sec: 478320.18 13 | Transfer/sec: 89.86MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/onion_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 326.87us 1.65ms 202.68ms 97.58% 5 | Req/Sec 40.55k 11.84k 58.48k 79.21% 6 | Latency Distribution 7 | 50% 165.00us 8 | 75% 215.00us 9 | 90% 612.00us 10 | 99% 2.82ms 11 | 9688778 requests in 20.03s, 1.78GB read 12 | Requests/sec: 483824.23 13 | Transfer/sec: 90.90MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/onion_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 769.31us 12.43ms 800.08ms 99.72% 5 | Req/Sec 39.92k 12.80k 86.60k 74.58% 6 | Latency Distribution 7 | 50% 158.00us 8 | 75% 202.00us 9 | 90% 431.00us 10 | 99% 2.76ms 11 | 7486767 requests in 20.10s, 1.37GB read 12 | Socket errors: connect 0, read 91, write 3789255, timeout 0 13 | Requests/sec: 372487.46 14 | Transfer/sec: 69.98MB 15 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/onion_04.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nanoant/WebFrameworkBenchmark/a1c6046060e052f2c5cbfb45360e6895651f5a98/results/E5-1650v2-Ubuntu-14.04LTS/onion_04.txt -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/puma_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.44ms 1.41ms 29.91ms 85.80% 5 | Req/Sec 6.75k 1.48k 11.38k 70.87% 6 | Latency Distribution 7 | 50% 1.10ms 8 | 75% 2.09ms 9 | 90% 3.30ms 10 | 99% 6.18ms 11 | 1618361 requests in 20.10s, 117.30MB read 12 | Requests/sec: 80518.61 13 | Transfer/sec: 5.84MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/puma_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.37ms 1.30ms 18.79ms 84.30% 5 | Req/Sec 6.95k 694.86 9.13k 71.62% 6 | Latency Distribution 7 | 50% 1.08ms 8 | 75% 1.98ms 9 | 90% 3.06ms 10 | 99% 5.78ms 11 | 1665850 requests in 20.10s, 120.74MB read 12 | Requests/sec: 82878.53 13 | Transfer/sec: 6.01MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/puma_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.39ms 1.36ms 21.08ms 86.34% 5 | Req/Sec 6.96k 1.15k 9.79k 59.92% 6 | Latency Distribution 7 | 50% 1.07ms 8 | 75% 1.99ms 9 | 90% 3.15ms 10 | 99% 6.14ms 11 | 1669322 requests in 20.10s, 120.99MB read 12 | Requests/sec: 83053.45 13 | Transfer/sec: 6.02MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/puma_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.49ms 1.55ms 24.15ms 86.97% 5 | Req/Sec 6.76k 1.09k 11.35k 77.50% 6 | Latency Distribution 7 | 50% 1.08ms 8 | 75% 2.09ms 9 | 90% 3.43ms 10 | 99% 7.12ms 11 | 1620500 requests in 20.10s, 117.45MB read 12 | Requests/sec: 80623.15 13 | Transfer/sec: 5.84MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/rust_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 41.82us 12.40us 1.94ms 97.40% 5 | Req/Sec 177.14k 12.48k 184.46k 86.57% 6 | Latency Distribution 7 | 50% 42.00us 8 | 75% 45.00us 9 | 90% 48.00us 10 | 99% 56.00us 11 | 3543749 requests in 20.10s, 385.27MB read 12 | Requests/sec: 176333.46 13 | Transfer/sec: 19.17MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/rust_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 42.03us 12.46us 2.24ms 97.34% 5 | Req/Sec 176.45k 11.75k 184.54k 87.06% 6 | Latency Distribution 7 | 50% 42.00us 8 | 75% 45.00us 9 | 90% 48.00us 10 | 99% 56.00us 11 | 3528680 requests in 20.10s, 383.63MB read 12 | Requests/sec: 175573.09 13 | Transfer/sec: 19.09MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/rust_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 41.24us 12.61us 4.12ms 98.73% 5 | Req/Sec 179.60k 6.83k 183.74k 95.52% 6 | Latency Distribution 7 | 50% 42.00us 8 | 75% 44.00us 9 | 90% 46.00us 10 | 99% 54.00us 11 | 3593350 requests in 20.10s, 390.66MB read 12 | Requests/sec: 178789.43 13 | Transfer/sec: 19.44MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/rust_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 44.49us 12.44us 1.03ms 94.96% 5 | Req/Sec 83.76k 61.99k 158.87k 49.75% 6 | Latency Distribution 7 | 50% 44.00us 8 | 75% 48.00us 9 | 90% 51.00us 10 | 99% 56.00us 11 | 3351786 requests in 20.10s, 364.40MB read 12 | Requests/sec: 166770.91 13 | Transfer/sec: 18.13MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/undertow_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 401.81us 3.90ms 204.73ms 99.05% 5 | Req/Sec 52.09k 7.87k 112.74k 93.33% 6 | Latency Distribution 7 | 50% 121.00us 8 | 75% 138.00us 9 | 90% 243.00us 10 | 99% 4.08ms 11 | 12211077 requests in 20.10s, 1.56GB read 12 | Requests/sec: 607522.22 13 | Transfer/sec: 79.37MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/undertow_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 260.55us 1.87ms 214.03ms 98.32% 5 | Req/Sec 51.87k 8.08k 144.18k 90.92% 6 | Latency Distribution 7 | 50% 122.00us 8 | 75% 146.00us 9 | 90% 295.00us 10 | 99% 3.29ms 11 | 12392167 requests in 20.10s, 1.58GB read 12 | Requests/sec: 616547.41 13 | Transfer/sec: 80.55MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/undertow_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 229.27us 1.70ms 203.88ms 98.88% 5 | Req/Sec 51.77k 6.71k 114.30k 90.32% 6 | Latency Distribution 7 | 50% 122.00us 8 | 75% 152.00us 9 | 90% 291.00us 10 | 99% 2.16ms 11 | 12348687 requests in 20.10s, 1.58GB read 12 | Requests/sec: 614363.21 13 | Transfer/sec: 80.27MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/undertow_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 226.26us 1.67ms 202.67ms 98.76% 5 | Req/Sec 51.41k 7.06k 126.57k 92.35% 6 | Latency Distribution 7 | 50% 123.00us 8 | 75% 152.00us 9 | 90% 286.00us 10 | 99% 2.34ms 11 | 12299515 requests in 20.10s, 1.57GB read 12 | Requests/sec: 611929.56 13 | Transfer/sec: 79.95MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/vibed-ldc2_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.50ms 3.37ms 80.47ms 98.73% 5 | Req/Sec 6.62k 643.38 8.00k 85.23% 6 | Latency Distribution 7 | 50% 1.15ms 8 | 75% 1.35ms 9 | 90% 1.60ms 10 | 99% 8.98ms 11 | 1587234 requests in 20.10s, 264.90MB read 12 | Requests/sec: 78966.46 13 | Transfer/sec: 13.18MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/vibed-ldc2_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.05ms 8.74ms 150.95ms 98.74% 5 | Req/Sec 6.69k 1.33k 9.27k 63.28% 6 | Latency Distribution 7 | 50% 1.11ms 8 | 75% 1.45ms 9 | 90% 1.84ms 10 | 99% 28.23ms 11 | 1599962 requests in 20.10s, 267.02MB read 12 | Requests/sec: 79601.50 13 | Transfer/sec: 13.28MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/vibed-ldc2_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 3.34ms 16.86ms 219.55ms 98.23% 5 | Req/Sec 6.23k 1.70k 11.89k 64.26% 6 | Latency Distribution 7 | 50% 1.27ms 8 | 75% 1.68ms 9 | 90% 2.10ms 10 | 99% 103.05ms 11 | 1480955 requests in 20.10s, 247.16MB read 12 | Requests/sec: 73679.16 13 | Transfer/sec: 12.30MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/vibed-ldc2_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.55ms 13.30ms 230.36ms 98.94% 5 | Req/Sec 6.00k 1.86k 14.60k 60.35% 6 | Latency Distribution 7 | 50% 1.21ms 8 | 75% 1.62ms 9 | 90% 2.18ms 10 | 99% 22.08ms 11 | 1431798 requests in 20.10s, 238.96MB read 12 | Requests/sec: 71234.44 13 | Transfer/sec: 11.89MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/vibed_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.57ms 3.13ms 66.53ms 98.69% 5 | Req/Sec 6.19k 585.42 7.12k 80.18% 6 | Latency Distribution 7 | 50% 1.23ms 8 | 75% 1.43ms 9 | 90% 1.70ms 10 | 99% 9.80ms 11 | 1486562 requests in 20.10s, 248.10MB read 12 | Requests/sec: 73959.63 13 | Transfer/sec: 12.34MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/vibed_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.81ms 11.43ms 147.04ms 97.74% 5 | Req/Sec 6.25k 1.56k 15.15k 78.69% 6 | Latency Distribution 7 | 50% 1.27ms 8 | 75% 1.53ms 9 | 90% 1.84ms 10 | 99% 68.35ms 11 | 1482303 requests in 20.10s, 247.39MB read 12 | Requests/sec: 73748.16 13 | Transfer/sec: 12.31MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/vibed_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.88ms 8.25ms 165.37ms 99.18% 5 | Req/Sec 6.44k 1.27k 9.82k 71.60% 6 | Latency Distribution 7 | 50% 1.24ms 8 | 75% 1.52ms 9 | 90% 1.78ms 10 | 99% 2.94ms 11 | 1544432 requests in 20.10s, 257.75MB read 12 | Requests/sec: 76839.10 13 | Transfer/sec: 12.82MB 14 | -------------------------------------------------------------------------------- /results/E5-1650v2-Ubuntu-14.04LTS/vibed_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 12 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.85ms 16.54ms 264.25ms 98.79% 5 | Req/Sec 6.44k 1.80k 12.42k 58.72% 6 | Latency Distribution 7 | 50% 1.17ms 8 | 75% 1.63ms 9 | 90% 2.11ms 10 | 99% 46.41ms 11 | 1535817 requests in 20.10s, 256.32MB read 12 | Requests/sec: 76408.57 13 | Transfer/sec: 12.75MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/cowboy_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 3.83ms 4.74ms 143.07ms 94.05% 5 | Req/Sec 7.75k 722.31 9.64k 78.00% 6 | Latency Distribution 7 | 50% 3.17ms 8 | 75% 4.30ms 9 | 90% 6.61ms 10 | 99% 20.16ms 11 | 616651 requests in 20.01s, 59.37MB read 12 | Requests/sec: 30822.99 13 | Transfer/sec: 2.97MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/cowboy_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 6.19ms 17.01ms 246.83ms 96.38% 5 | Req/Sec 7.30k 1.32k 9.48k 87.06% 6 | Latency Distribution 7 | 50% 3.24ms 8 | 75% 4.45ms 9 | 90% 7.30ms 10 | 99% 84.11ms 11 | 578393 requests in 20.03s, 55.68MB read 12 | Requests/sec: 28878.01 13 | Transfer/sec: 2.78MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/cowboy_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 7.70ms 17.36ms 177.33ms 93.69% 5 | Req/Sec 6.87k 1.76k 17.95k 84.13% 6 | Latency Distribution 7 | 50% 3.36ms 8 | 75% 4.90ms 9 | 90% 9.59ms 10 | 99% 92.77ms 11 | 544832 requests in 20.09s, 52.45MB read 12 | Requests/sec: 27120.20 13 | Transfer/sec: 2.61MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/cowboy_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 6.93ms 14.74ms 182.82ms 93.76% 5 | Req/Sec 7.00k 1.63k 9.59k 83.69% 6 | Latency Distribution 7 | 50% 3.30ms 8 | 75% 4.64ms 9 | 90% 9.26ms 10 | 99% 80.42ms 11 | 556623 requests in 20.08s, 53.59MB read 12 | Requests/sec: 27725.06 13 | Transfer/sec: 2.67MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/go_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.86ms 5.21ms 303.64ms 98.54% 5 | Req/Sec 15.30k 1.17k 27.03k 86.62% 6 | Latency Distribution 7 | 50% 1.51ms 8 | 75% 1.64ms 9 | 90% 2.00ms 10 | 99% 9.93ms 11 | 1219012 requests in 20.03s, 154.62MB read 12 | Requests/sec: 60859.15 13 | Transfer/sec: 7.72MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/go_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.78ms 2.57ms 108.57ms 98.04% 5 | Req/Sec 15.38k 745.87 20.34k 85.75% 6 | Latency Distribution 7 | 50% 1.51ms 8 | 75% 1.63ms 9 | 90% 1.92ms 10 | 99% 10.32ms 11 | 1225512 requests in 20.02s, 155.44MB read 12 | Requests/sec: 61210.36 13 | Transfer/sec: 7.76MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/go_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.81ms 4.81ms 302.21ms 98.83% 5 | Req/Sec 15.37k 1.17k 22.64k 83.62% 6 | Latency Distribution 7 | 50% 1.50ms 8 | 75% 1.63ms 9 | 90% 1.93ms 10 | 99% 7.83ms 11 | 1224772 requests in 20.03s, 155.35MB read 12 | Requests/sec: 61150.62 13 | Transfer/sec: 7.76MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/go_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.68ms 1.79ms 103.94ms 97.86% 5 | Req/Sec 15.35k 0.92k 21.27k 85.38% 6 | Latency Distribution 7 | 50% 1.51ms 8 | 75% 1.63ms 9 | 90% 1.94ms 10 | 99% 6.84ms 11 | 1223179 requests in 20.02s, 155.15MB read 12 | Requests/sec: 61085.08 13 | Transfer/sec: 7.75MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/jester_rc_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 4.87ms 2.93ms 65.37ms 80.86% 5 | Req/Sec 5.35k 248.20 6.68k 77.38% 6 | Latency Distribution 7 | 50% 3.02ms 8 | 75% 5.77ms 9 | 90% 10.13ms 10 | 99% 11.40ms 11 | 426999 requests in 20.05s, 30.54MB read 12 | Requests/sec: 21300.47 13 | Transfer/sec: 1.52MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/jester_rc_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 4.79ms 2.82ms 51.37ms 80.70% 5 | Req/Sec 5.42k 261.38 6.99k 66.75% 6 | Latency Distribution 7 | 50% 2.98ms 8 | 75% 5.61ms 9 | 90% 9.95ms 10 | 99% 11.12ms 11 | 432318 requests in 20.04s, 30.92MB read 12 | Requests/sec: 21572.23 13 | Transfer/sec: 1.54MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/jester_rc_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 4.92ms 2.98ms 80.74ms 80.82% 5 | Req/Sec 5.30k 253.31 6.45k 80.12% 6 | Latency Distribution 7 | 50% 3.09ms 8 | 75% 5.73ms 9 | 90% 10.15ms 10 | 99% 11.39ms 11 | 422735 requests in 20.05s, 30.24MB read 12 | Requests/sec: 21089.22 13 | Transfer/sec: 1.51MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/jester_rc_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 4.98ms 2.96ms 53.05ms 81.34% 5 | Req/Sec 5.26k 283.66 7.36k 68.50% 6 | Latency Distribution 7 | 50% 3.10ms 8 | 75% 5.98ms 9 | 90% 10.51ms 10 | 99% 11.74ms 11 | 419452 requests in 20.06s, 30.00MB read 12 | Requests/sec: 20914.89 13 | Transfer/sec: 1.50MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/netty_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 3.32ms 12.26ms 338.62ms 97.21% 5 | Req/Sec 14.58k 2.90k 20.75k 90.41% 6 | Latency Distribution 7 | 50% 1.62ms 8 | 75% 1.64ms 9 | 90% 1.70ms 10 | 99% 64.90ms 11 | 1164577 requests in 20.10s, 111.06MB read 12 | Socket errors: connect 0, read 158, write 0, timeout 0 13 | Requests/sec: 57930.13 14 | Transfer/sec: 5.52MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/netty_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.65ms 727.53us 33.06ms 97.10% 5 | Req/Sec 15.38k 365.94 20.10k 92.75% 6 | Latency Distribution 7 | 50% 1.62ms 8 | 75% 1.64ms 9 | 90% 1.67ms 10 | 99% 2.91ms 11 | 1224739 requests in 20.00s, 116.80MB read 12 | Socket errors: connect 0, read 37, write 0, timeout 0 13 | Requests/sec: 61225.50 14 | Transfer/sec: 5.84MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/netty_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.78ms 5.30ms 304.03ms 99.60% 5 | Req/Sec 15.43k 330.77 17.55k 89.88% 6 | Latency Distribution 7 | 50% 1.61ms 8 | 75% 1.64ms 9 | 90% 1.67ms 10 | 99% 3.12ms 11 | 1228482 requests in 20.01s, 117.16MB read 12 | Socket errors: connect 0, read 38, write 0, timeout 0 13 | Requests/sec: 61406.03 14 | Transfer/sec: 5.86MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/netty_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.68ms 1.29ms 69.36ms 98.24% 5 | Req/Sec 15.40k 515.57 20.06k 94.88% 6 | Latency Distribution 7 | 50% 1.61ms 8 | 75% 1.64ms 9 | 90% 1.67ms 10 | 99% 3.51ms 11 | 1226422 requests in 20.01s, 116.96MB read 12 | Socket errors: connect 0, read 37, write 0, timeout 0 13 | Requests/sec: 61293.57 14 | Transfer/sec: 5.85MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nginx_echo_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.86ms 13.92ms 231.44ms 98.95% 5 | Req/Sec 15.45k 1.74k 22.12k 86.43% 6 | Latency Distribution 7 | 50% 1.46ms 8 | 75% 1.70ms 9 | 90% 2.04ms 10 | 99% 25.15ms 11 | 1226094 requests in 20.01s, 139.09MB read 12 | Requests/sec: 61281.38 13 | Transfer/sec: 6.95MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nginx_echo_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.64ms 1.36ms 65.08ms 98.13% 5 | Req/Sec 15.47k 1.33k 18.93k 73.12% 6 | Latency Distribution 7 | 50% 1.48ms 8 | 75% 1.68ms 9 | 90% 2.01ms 10 | 99% 3.54ms 11 | 1231709 requests in 20.01s, 139.72MB read 12 | Requests/sec: 61568.00 13 | Transfer/sec: 6.98MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nginx_echo_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 12.38ms 39.48ms 376.81ms 92.44% 5 | Req/Sec 13.52k 3.66k 21.44k 86.49% 6 | Latency Distribution 7 | 50% 1.57ms 8 | 75% 1.95ms 9 | 90% 15.11ms 10 | 99% 203.01ms 11 | 1031845 requests in 20.09s, 117.05MB read 12 | Requests/sec: 51352.76 13 | Transfer/sec: 5.83MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nginx_echo_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 23.91ms 76.56ms 581.55ms 91.96% 5 | Req/Sec 12.35k 3.14k 20.08k 83.22% 6 | Latency Distribution 7 | 50% 1.69ms 8 | 75% 2.53ms 9 | 90% 38.00ms 10 | 99% 407.05ms 11 | 905490 requests in 20.08s, 102.72MB read 12 | Requests/sec: 45099.96 13 | Transfer/sec: 5.12MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nginx_lua_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.79ms 2.16ms 65.63ms 95.92% 5 | Req/Sec 15.69k 1.58k 22.28k 69.25% 6 | Latency Distribution 7 | 50% 1.39ms 8 | 75% 1.75ms 9 | 90% 2.41ms 10 | 99% 9.73ms 11 | 1249178 requests in 20.02s, 140.52MB read 12 | Requests/sec: 62382.50 13 | Transfer/sec: 7.02MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nginx_lua_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 22.91ms 74.36ms 467.66ms 92.33% 5 | Req/Sec 11.86k 3.53k 19.11k 81.83% 6 | Latency Distribution 7 | 50% 1.68ms 8 | 75% 2.53ms 9 | 90% 14.24ms 10 | 99% 388.57ms 11 | 719781 requests in 20.06s, 80.97MB read 12 | Requests/sec: 35883.38 13 | Transfer/sec: 4.04MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nginx_lua_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 20.09ms 55.86ms 365.06ms 90.45% 5 | Req/Sec 12.80k 3.91k 18.33k 85.38% 6 | Latency Distribution 7 | 50% 1.64ms 8 | 75% 2.39ms 9 | 90% 67.22ms 10 | 99% 268.97ms 11 | 934977 requests in 20.09s, 105.17MB read 12 | Requests/sec: 46529.03 13 | Transfer/sec: 5.23MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nginx_lua_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 95.08ms 329.65ms 2.03s 93.30% 5 | Req/Sec 12.60k 3.15k 17.16k 90.49% 6 | Latency Distribution 7 | 50% 1.76ms 8 | 75% 2.62ms 9 | 90% 143.86ms 10 | 99% 1.79s 11 | 881769 requests in 20.07s, 99.19MB read 12 | Requests/sec: 43936.93 13 | Transfer/sec: 4.94MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nim_mnsgc_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.49ms 494.65us 41.30ms 91.71% 5 | Req/Sec 16.82k 1.89k 19.35k 63.43% 6 | Latency Distribution 7 | 50% 1.30ms 8 | 75% 1.82ms 9 | 90% 1.96ms 10 | 99% 2.60ms 11 | 1345604 requests in 20.10s, 96.25MB read 12 | Requests/sec: 66938.12 13 | Transfer/sec: 4.79MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nim_mnsgc_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.49ms 385.48us 24.49ms 83.25% 5 | Req/Sec 16.85k 2.19k 19.48k 71.12% 6 | Latency Distribution 7 | 50% 1.30ms 8 | 75% 1.79ms 9 | 90% 1.94ms 10 | 99% 2.57ms 11 | 1340786 requests in 20.00s, 95.90MB read 12 | Requests/sec: 67034.16 13 | Transfer/sec: 4.79MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nim_mnsgc_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.50ms 475.11us 38.29ms 90.77% 5 | Req/Sec 16.79k 0.96k 18.50k 65.80% 6 | Latency Distribution 7 | 50% 1.31ms 8 | 75% 1.78ms 9 | 90% 1.95ms 10 | 99% 2.58ms 11 | 1343504 requests in 20.10s, 96.09MB read 12 | Requests/sec: 66838.70 13 | Transfer/sec: 4.78MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nim_mnsgc_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.50ms 397.87us 25.00ms 83.25% 5 | Req/Sec 16.77k 2.15k 23.48k 70.11% 6 | Latency Distribution 7 | 50% 1.31ms 8 | 75% 1.79ms 9 | 90% 1.96ms 10 | 99% 2.60ms 11 | 1339712 requests in 20.10s, 95.82MB read 12 | Requests/sec: 66651.30 13 | Transfer/sec: 4.77MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nim_rc_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.29ms 1.39ms 41.81ms 87.65% 5 | Req/Sec 11.88k 735.54 14.59k 81.88% 6 | Latency Distribution 7 | 50% 1.73ms 8 | 75% 1.87ms 9 | 90% 4.36ms 10 | 99% 7.08ms 11 | 946347 requests in 20.02s, 67.69MB read 12 | Requests/sec: 47276.36 13 | Transfer/sec: 3.38MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nim_rc_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.28ms 1.41ms 41.12ms 88.33% 5 | Req/Sec 12.03k 598.70 12.82k 71.50% 6 | Latency Distribution 7 | 50% 1.71ms 8 | 75% 1.84ms 9 | 90% 4.55ms 10 | 99% 7.23ms 11 | 958245 requests in 20.01s, 68.54MB read 12 | Requests/sec: 47880.98 13 | Transfer/sec: 3.42MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nim_rc_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.33ms 1.46ms 43.07ms 88.28% 5 | Req/Sec 11.79k 604.06 13.09k 72.12% 6 | Latency Distribution 7 | 50% 1.75ms 8 | 75% 1.87ms 9 | 90% 4.63ms 10 | 99% 7.54ms 11 | 939092 requests in 20.02s, 67.17MB read 12 | Requests/sec: 46913.38 13 | Transfer/sec: 3.36MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/nim_rc_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 2.33ms 1.43ms 37.92ms 88.00% 5 | Req/Sec 11.74k 551.34 13.06k 67.25% 6 | Latency Distribution 7 | 50% 1.75ms 8 | 75% 1.89ms 9 | 90% 4.55ms 10 | 99% 7.44ms 11 | 935149 requests in 20.01s, 66.89MB read 12 | Requests/sec: 46723.82 13 | Transfer/sec: 3.34MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/onion_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.83ms 319.34us 12.58ms 90.35% 5 | Req/Sec 13.07k 785.86 20.48k 91.04% 6 | Latency Distribution 7 | 50% 1.89ms 8 | 75% 1.92ms 9 | 90% 1.98ms 10 | 99% 2.28ms 11 | 1045846 requests in 20.10s, 183.52MB read 12 | Socket errors: connect 0, read 256, write 5, timeout 0 13 | Requests/sec: 52024.96 14 | Transfer/sec: 9.13MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/onion_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.79ms 327.61us 11.05ms 90.61% 5 | Req/Sec 13.14k 1.01k 19.16k 90.50% 6 | Latency Distribution 7 | 50% 1.87ms 8 | 75% 1.90ms 9 | 90% 1.95ms 10 | 99% 2.25ms 11 | 1045694 requests in 20.00s, 183.49MB read 12 | Socket errors: connect 0, read 300, write 0, timeout 0 13 | Requests/sec: 52280.59 14 | Transfer/sec: 9.17MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/onion_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.79ms 325.99us 11.85ms 91.19% 5 | Req/Sec 13.23k 0.88k 17.17k 91.38% 6 | Latency Distribution 7 | 50% 1.86ms 8 | 75% 1.89ms 9 | 90% 1.94ms 10 | 99% 2.19ms 11 | 1053154 requests in 20.10s, 184.80MB read 12 | Socket errors: connect 0, read 291, write 0, timeout 0 13 | Requests/sec: 52389.11 14 | Transfer/sec: 9.19MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/onion_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.75ms 374.58us 11.15ms 86.28% 5 | Req/Sec 13.23k 0.99k 19.82k 89.50% 6 | Latency Distribution 7 | 50% 1.86ms 8 | 75% 1.89ms 9 | 90% 1.93ms 10 | 99% 2.21ms 11 | 1054127 requests in 20.11s, 184.97MB read 12 | Socket errors: connect 0, read 251, write 1, timeout 0 13 | Requests/sec: 52430.95 14 | Transfer/sec: 9.20MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/ruby_puma_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 9.08ms 20.44ms 280.66ms 91.89% 5 | Req/Sec 6.53k 3.15k 22.38k 73.17% 6 | Latency Distribution 7 | 50% 3.01ms 8 | 75% 5.21ms 9 | 90% 22.07ms 10 | 99% 105.83ms 11 | 510904 requests in 20.08s, 37.03MB read 12 | Requests/sec: 25449.18 13 | Transfer/sec: 1.84MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/ruby_puma_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 6.88ms 15.63ms 245.45ms 93.57% 5 | Req/Sec 6.72k 2.93k 18.88k 75.00% 6 | Latency Distribution 7 | 50% 3.08ms 8 | 75% 4.37ms 9 | 90% 12.99ms 10 | 99% 87.59ms 11 | 528829 requests in 20.10s, 38.33MB read 12 | Requests/sec: 26315.40 13 | Transfer/sec: 1.91MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/ruby_puma_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 8.73ms 19.84ms 259.70ms 92.10% 5 | Req/Sec 6.73k 2.94k 19.72k 75.03% 6 | Latency Distribution 7 | 50% 3.06ms 8 | 75% 4.58ms 9 | 90% 20.18ms 10 | 99% 103.98ms 11 | 529225 requests in 20.09s, 38.36MB read 12 | Requests/sec: 26343.35 13 | Transfer/sec: 1.91MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/ruby_puma_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 7.79ms 17.28ms 263.03ms 92.87% 5 | Req/Sec 6.41k 2.79k 21.89k 74.97% 6 | Latency Distribution 7 | 50% 3.13ms 8 | 75% 5.21ms 9 | 90% 16.29ms 10 | 99% 94.00ms 11 | 503817 requests in 20.08s, 36.52MB read 12 | Requests/sec: 25088.08 13 | Transfer/sec: 1.82MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/rust_iron_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 145.85us 214.51us 24.65ms 98.26% 5 | Req/Sec 24.42k 10.87k 41.58k 55.97% 6 | Latency Distribution 7 | 50% 129.00us 8 | 75% 153.00us 9 | 90% 190.00us 10 | 99% 442.00us 11 | 976415 requests in 20.10s, 106.15MB read 12 | Requests/sec: 48577.31 13 | Transfer/sec: 5.28MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/rust_iron_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 146.28us 222.40us 22.48ms 98.26% 5 | Req/Sec 24.31k 10.56k 43.28k 55.50% 6 | Latency Distribution 7 | 50% 129.00us 8 | 75% 152.00us 9 | 90% 190.00us 10 | 99% 459.00us 11 | 967385 requests in 20.06s, 105.17MB read 12 | Requests/sec: 48233.67 13 | Transfer/sec: 5.24MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/rust_iron_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 139.01us 152.33us 33.50ms 97.22% 5 | Req/Sec 47.07k 1.62k 49.39k 88.06% 6 | Latency Distribution 7 | 50% 130.00us 8 | 75% 145.00us 9 | 90% 169.00us 10 | 99% 410.00us 11 | 941349 requests in 20.10s, 102.34MB read 12 | Requests/sec: 46831.58 13 | Transfer/sec: 5.09MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/rust_iron_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 146.62us 220.79us 19.49ms 98.29% 5 | Req/Sec 24.38k 10.64k 41.34k 57.96% 6 | Latency Distribution 7 | 50% 129.00us 8 | 75% 154.00us 9 | 90% 191.00us 10 | 99% 453.00us 11 | 975095 requests in 20.10s, 106.01MB read 12 | Requests/sec: 48510.46 13 | Transfer/sec: 5.27MB 14 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/undertow_01.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 3.01ms 13.04ms 305.36ms 97.66% 5 | Req/Sec 17.77k 3.04k 22.11k 92.73% 6 | Latency Distribution 7 | 50% 1.35ms 8 | 75% 1.36ms 9 | 90% 1.44ms 10 | 99% 57.71ms 11 | 1410880 requests in 20.01s, 184.34MB read 12 | Socket errors: connect 0, read 102, write 2, timeout 0 13 | Requests/sec: 70522.35 14 | Transfer/sec: 9.21MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/undertow_02.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.42ms 1.73ms 90.22ms 99.32% 5 | Req/Sec 18.55k 1.42k 50.53k 98.75% 6 | Latency Distribution 7 | 50% 1.35ms 8 | 75% 1.36ms 9 | 90% 1.39ms 10 | 99% 2.29ms 11 | 1481695 requests in 20.10s, 193.59MB read 12 | Socket errors: connect 0, read 68, write 0, timeout 0 13 | Requests/sec: 73710.84 14 | Transfer/sec: 9.63MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/undertow_03.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.35ms 381.78us 27.27ms 97.46% 5 | Req/Sec 18.58k 260.66 21.32k 83.96% 6 | Latency Distribution 7 | 50% 1.34ms 8 | 75% 1.36ms 9 | 90% 1.38ms 10 | 99% 1.77ms 11 | 1486246 requests in 20.10s, 194.18MB read 12 | Socket errors: connect 0, read 35, write 0, timeout 0 13 | Requests/sec: 73931.97 14 | Transfer/sec: 9.66MB 15 | -------------------------------------------------------------------------------- /results/i5-2400S-OSX-10.10.3/undertow_04.txt: -------------------------------------------------------------------------------- 1 | Running 20s test @ http://localhost:8080/ 2 | 4 threads and 100 connections 3 | Thread Stats Avg Stdev Max +/- Stdev 4 | Latency 1.35ms 349.45us 25.41ms 97.34% 5 | Req/Sec 18.53k 211.85 19.28k 80.00% 6 | Latency Distribution 7 | 50% 1.35ms 8 | 75% 1.36ms 9 | 90% 1.38ms 10 | 99% 1.73ms 11 | 1475048 requests in 20.00s, 192.72MB read 12 | Socket errors: connect 0, read 69, write 0, timeout 0 13 | Requests/sec: 73743.27 14 | Transfer/sec: 9.63MB 15 | -------------------------------------------------------------------------------- /time.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # ^------ makes OSX use my own Bash 4 3 | 4 | . common/threads.sh 5 | 6 | [ -z "$1" ] && \ 7 | exec wrk \ 8 | -t${THREADS-$threads} -c100 -d10S \ 9 | --timeout 2000 \ 10 | -H 'Connection: keep-alive' \ 11 | ${URL-http://localhost:8080/} 12 | 13 | for i in {01..04}; do 14 | echo === results/${1}_${i}.txt 15 | wrk \ 16 | -t${THREADS-$threads} -c100 -d20S \ 17 | --timeout 2000 \ 18 | -H 'Connection: keep-alive' \ 19 | --latency \ 20 | ${URL-http://localhost:8080/} | \ 21 | tee ${1}_${i}.txt 22 | done 23 | --------------------------------------------------------------------------------