Benchmarking NeoQuotes (Jetty + JRubyRack)

To perform basic HTTP benchmarks against a web application, you can start with ab – Apache HTTP server benchmarking tool. speed

If you use Ubuntu, the installation is very simple:

sudo apt-get install apache2-utils

I used this tool to benchmark NeoQuotes application, testing how Jetty with JRuby-Rack are performing against multiple concurrent requests.

First, start up Jetty with mvn jetty:run or with the command defined in project Procfile (sh target/bin/jruby -S config/jetty.rb for NeoQuotes).

Next, execute multiple times the following command:

ab -n 10000 -c 25 http://localhost:8080/

where n = number of requests and c = concurrency level.

Is worth to look to the number of requests per second, that are increasing every time the benchmark is executed. This happens thanks to JIT!

Below some results after running ab -n 10000 -c 25 http://localhost:55012/ three times in a commodity hardware (all tests were performed on the application homepage where there is no interaction with Neo4j and no cache mechanism is configured):

First execution:

Time taken for tests:   73.162 seconds
Requests per second:    136.68 [#/sec] (mean)

Second execution:

Time taken for tests:   67.006 seconds
Requests per second:    149.24 [#/sec] (mean)

Third execution:

Time taken for tests:   65.725 seconds
Requests per second:    152.15 [#/sec] (mean)

Also, take a look at Min and Max threads of Jetty QueuedThreadPool, at config/jetty.rb configuration.

Depending of your hardware and your VM configuration,the more threads you configure into min and max, the worse your throughput gets when your VM starts to reach its resource limits.

About these ads