Node.js did really well on tasks that have lots of concurrent requests that are mostly waiting, did OK on basic static serving tasks and not so well on compute-intensive tasks.
For Sinatra I used the scanty blog engine and the basic "Hello World" example:
require 'sinatra' get '/hi' do "Hello World!" end
For Ruby on Rails, I used the blog tutorial "out of the box", invoking it with "
rails s" to start the server. In addition I also had RoR just serving a static file instead of the database-backed blog. All this on my new dev machine, a 2011 MacBook Air with 1.8 GHz Intel Core i7 and 4 GB of DRAM. I also discovered that httperf is a much better benchmark program for my needs than ab. I used it with 100 requests per connection, a burst length of 100 and a sufficient number of connections to get stable results without taking all day.
|Sinatra Hello World||357|
|Ruby on Rails static page||312|
|Sinatra scanty blog||101|
|Ruby on Rails blog||17|
Is this considered normal or am I doing something wrong?