Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A dumb comparison of the latency of trivial requests in various webservers.
Scala Ruby Go Shell
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
golang
jruby_17_mizuno
jruby_17_trinidad
results Add results.
ruby_19_goliath
ruby_19_rack Add a couple of jruby versions as well.
ruby_19_sinatra
scala_29_scalatra
README.md
run_benchmark.rb
writeup.md

README.md

This is a simple and probably horribly flawed comparison between a few different web servers. The idea is to serve a few very simple requests, and measure the latency of responses as the load increases, to get an idea of both the qps that could be supported as well as the latencies that the users see at various loads.

Candidates:

  • Ruby 1.9.3 using Sinatra in ruby_19_sinatra/:
    • using Unicorn with 8 workers: run_unicorn.sh
    • using Thin with a single worker: run_thin.sh
    • using Racer with a single worker: run_racer.sh
  • Ruby 1.9.3 using Rack directly in ruby_19_rack/:
    • using Unicorn with 8 workers: run_unicorn.sh
    • using Thin with a single worker: run_thin.sh
    • using Racer with a single worker: run_racer.sh
  • Ruby 1.9.3 using Goliath in ruby_19_goliath/
  • JRuby 1.7.0-rc1 with Trinidad in jruby_17_trinidad/
  • JRuby 1.7.0rc1 with Mizuno in jruby_17_mizuno/
  • Scala 2.9.2 with Java 1.7.0 and Scalatra in scala_29_scalatra/
  • I was going to do Lift but I had no desire to mess around with configuring sbt manually.
  • Go 1.0.3 using net/http from the standard library in golang.

Usage:

First, install ab (apachebench) and gnuplot.

Start each server with the provided run script or by following the directions in the folder. When the server is running, run run_benchmark.rb against it and type in a description (the name of the server that's running) when prompted.

Something went wrong with that request. Please try again.