Doing some work with HTML5 WebSockets ATM and been looking at the different web servers, found this great post on the web and thought I would share.
Choosing the right one
The choice is mainly made by the server and middleware you use:
- Multi-Process, non-preforking: Mongrel, Thin, WEBrick, Zbatery
- Multi-Process, preforking: Unicorn, Rainbows, Passenger
- Evented (suited for sinatra-synchrony): Thin, Rainbows, Zbatery
- Threaded: Net::HTTP::Server, Threaded Mongrel, Puma, Rainbows, Zbatery, Thin
 since Sinatra 1.3.0, Thin will be started in threaded mode, if it is started by Sinatra (i.e. with ruby app.rb, but not with the thin command, nor with rackup).