Benchmark for REST api on Ada servers
Ada Shell Awk
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
asf Update the AWS configuration to use the same configuration as the AWS… Mar 19, 2017
aws Set the number of connections to 8 Mar 19, 2017
ews Implement the REST benchmark test with EWS server library Mar 1, 2017
.gitignore Ignore some files Mar 1, 2017 Add some documentation Mar 19, 2017
config.gpr Configuration for GNAT projects Feb 28, 2017
plot-memory.gpi GNU plot script to make the memory plot Mar 19, 2017
plot-perf.gpi GNU plot script to make the performance graph Mar 19, 2017
proc-extract.awk AWK script to extract some files from a /proc/<pid>/stat Mar 19, 2017 Script to run the benchmark Mar 19, 2017

Ada REST API Server Benchmark


Are you wondering which web container to use for your next web application? Which language are you using? Java or Ada ?

This project compares several Ada servers and you can compare the results against several Java containers such as: Tomcat, Jetty, Grizzly or Undertow.

The project implements the same REST API as the java-rest-api-web-container-benchmark which compares several Java web containers. The REST API is the same for each server (Java or Ada) and it returns the following json result:

{"greeting":"Hello World!"}

Server performances are measured by using the Siege


To build the Ada servers, you must have built and installed the following:

Then build with:

  cd aws && gprbuild -Paws_benchmark -p
  cd asf && gprbuild -Pasf_benchmark -p
  cd ews && gprbuild -Pews_benchmark -p
  cd simple_components && gprbuild -Pcomponents_benchmark -p

Linux Network Stack settings

Siege makes an intensive use of network connections which results in exhaustion of TCP/IP port to connect to the server. This is due to the TCP TIME_WAIT that prevents the TCP/IP port to be re-used for future connections. To avoid such exhaustion, you should setup the network stack on both the server host and the client host where siege is executed. You will do this with:

  sudo sysctl -w net.ipv4.tcp_tw_recycle=1
  sudo sysctl -w net.ipv4.tcp_tw_reuse=1

Running the benchmark

Start the server that you want to benchmark, for example:


In another window (or best on another computer), run the Siege benchmark:

  sh ada-aws http://localhost:8080/api

(change localhost to the IP address of the server if necessary).

Results are produced in the results directory and you can plot them by using Gnuplot.