[Mongrel] multi threaded theoretically useful?

Kirk Haines wyhaines at gmail.com
Sat Sep 8 17:02:56 EDT 2007


On 9/8/07, Ashley Moran <work at ashleymoran.me.uk> wrote:

> Just out of curiosity, does anyone here use Nitro?  I'm going to
> switch from Rails to Nitro for one of my own projects.  I've heard it
> runs happily multi-threaded.  Anyone noticed any difference in
> performance?  (Or for that matter, with other frameworks that run
> multi-threaded like Camping and Merb?)  To my knowledge, the only
> apps big enough for scalability to be a serious issue are all in Rails.

I don't use Nitro, but I have followed its development for a couple
years, and have done some benchmarks with it.

It is somewhat faster than Rails (though there was a very extensive
rewrite that is nearing completion for the 0.50 release, and I have no
idea what the rewrite has done to overall performance), and yes, it's
Mongrel handler runs in a multithreaded mode.

Actually, every framework except for Rails will Run in that way.
Merb, as an example, runs multithreaded, and is one of the fastest
Ruby frameworks (in my benchmarks, only IOWA is faster), and it has
some projects that do use clusters (I am helping someone setup a small
clustered app for demo purposes this weekend, for example).  I have
written several applications that were designed for clustering and for
heavy, multiserver use with IOWA (but the customers never ended up
taking them there, alas).  Ramaze is also a nice, multithread-safe
framework that merits some attention.  It is kind of like Nitro's
Merb.  Inspired by Nitro, but lighter weight, reasonably fast, with
some good ideas in it.

> Also, this thread has answered the question I've wondered lately,
> namely that MRI can't context switch if one thread is in a C
> extension like a database adapter?.  Will Rubinius go any way to help
> this, assuming the adapter is re-entrant?

With Rubinius (or JRuby) it is not the same issue because they are
using OS level threads.


Kirk Haines


More information about the Mongrel-users mailing list