Beta

These benchmarks are under test and these numbers will be updated. The objective of this test is not to detect the fastest tool, but find good combinations of web servers and frameworks. To interpret the data, let understand that there are important differences between them. For example, some web servers supports SSL, Gzip, Keep-Alive, DDos protection, Rate Limit and others don't.

Source code

The source code of the handlers/views/configurations can be found in the GitHub. Pull Requests are welcome! Comments and suggestions? Contact us.

Round [[ round.number ]] - [[ round.created_at.$date|date:"yyyy-MM-dd" ]]

Web Servers

Web Frameworks

Languages

# Toolset Lang Web Server Web Framework JSON lib Concurrency (Reqs/s and Errors)
[[ c ]]
[[ $index + 1 ]] [[ t.name ]] [[ t.language ]] [[ t.web_server ]] [[ t.web_framework ]] [[ t.json_lib ]] [[ b.results.reqs_per_second ]]
[[ b.results.requests.errored + (b.results.requests.total - b.results.status_codes._2xx) ]]

About the tests

Suggestions are welcome!
  • All logs disabled
  • Warmup of [[ round.warmup_requests * round.warmup_concurrencies.length ]] requests before benchmarking
  • Benchmarks running [[ round.requests ]] requests per concurrency test
  • [[ round.trials ]] trials per concurrency test. The best result is selected
  • Keep-alive enabled: [[ round.keep_alive_s ]]s
  • Gzip: [[ round.gzip ]]
  • No network latency/bandwidth/QoS issues
  • [[ round.ephemeral_ports ]] ephemeral ports
  • TIME_WAIT of [[ round.time_wait_ms ]]ms
  • Maximum of [[ round.max_tcp_sockets ]] TCP sockets
  • Maximum of [[ round.max_open_files ]] open files
  • Maximum of [[ round.max_open_files_per_proc ]] open files per process
  • Reuse TCP sockets: [[ round.reuse_tcp_sockets ]]