Just a simple "hello world" web server benchmark. Between on a Linux cloth 2.6.24-24-generic #1 SMP Wed Apr 15 15:54:25 UTC 2009 i686 GNU/Linux

raw data, scripts, blah

I followed the instructions on tornado's website and used their script

 
import tornado.httpserver
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

Unfortunately when I started Tornado it said it couldn't use the epoll() backend and used select() instead. This negatively affects the results, so take the benchmark with a grain of salt.

Results

30 concurrent clients

Requests completed
tornado    node    thin 
  30859   40022   40569


tornado 
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  14.00   28.00   28.00   28.58   28.00   69.00 

node
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00   12.00   20.00   21.91   29.00  176.00 

thin
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  10.00   17.00   19.00   21.59   21.00  191.00 

1 concurrent client

Requests completed
tornado    node    thin 
  17643   24348   22178

tornado
   Min.   1st Qu.   Median   Mean    3rd Qu.    Max. 
  1.000    1.000    1.000    1.028    1.000   12.000 

node
    Min.  1st Qu.   Median   Mean    3rd Qu.    Max. 
  0.0000   0.0000   1.0000   0.7182   1.0000  220.0000 

thin
   Min.   1st Qu.   Median   Mean    3rd Qu.   Max. 
  1.000    1.000    1.000    1.124    1.000   548.000
(didn't bother to make graphs)

300 concurrent client

Requests completed
tornado    node    thin 
  31825   39732   38424 

tornado
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   99.0   200.0   244.0   280.2   276.0  6362.0 

node
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    9.0    59.0   100.0   219.4   142.0 12200.0 

thin
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   63.0    83.0    86.0   177.1    91.0 24080.0

Summary

Tornado looks pretty fast with tight response time variance.