Reputation: 103
I have been playing around and evaluating other options to rails' default WEBrick server and Thin was the most painless and clean thing which worked very well!!
which one of these Mongrel, Thin, WEBrick and Passenger would you recommend and why..? are there any scalability perks(cluster friendly or configs which can handle some sort of scale) which come with any of these servers.. or should scalability even be a parameter while evaluating them?
Upvotes: 8
Views: 5700
Reputation: 18934
Dipak already answered half of your question but let me clarify on things a little bit. (I am one of the Phusion Passenger authors.)
When it comes to scalability, there's not much difference. They all perform very similar in production, they all scale in about the same way, and any problems you encounter will most likely to be caused by your app or by Rails. Well, except for WEBrick, which you really shouldn't use in production. You may see difference in hello world benchmarks, but that will be all. In production use most of the time will be spent in the app so any minor speed differences visible in hello world benchmarks will become completely invisible.
There are some subtleties to be aware of though.
The I/O model may or may not be important depending on the nature of your application. Mongrel, Thin, Unicorn, they are all multi-process single-threaded. This works great for traditional web apps which looks up stuff in the local database and renders something, but sucks majorly for apps which perform a lot of HTTP API calls or otherwise have to wait a lot on I/O. Why Rails 4 Live Streaming is a Big Deal explains this in detail.
Phusion Passenger is also multi-process single-threaded, but Phusion Passenger Enterprise supports multithreading. Phusion Passenger Enterprise is a commercial variant of the open source Phusion Passenger, with a variety of features useful for large-scale production environments.
So, pick whatever option you think is best for your scenario.
Upvotes: 9
Reputation: 32140
Thin is as easy as gem 'thin' for development and production
Upvotes: 0
Reputation: 6036
The easiest to set up for production will probably be Apache and mod_rails (passenger). If you want to be using the new hotness, you could give nginx and passenger a whirl.
For development mongrel is usually the easiest to work with. Most Windows IDE's (RadRails, Netbeans) give you the choice to use Webrick or Mongrel for development work and let you control the servers from the IDE itself.
Update
Four Choices
There are really four choices, well, plus WEBrick, but that would be an unusual choice for a production server. Approximately in order of increasing complexity...
nginx + Mongrel nginx + Passenger Apache + Mongrel Apache + Passenger (There is Phusion Passenger Standalone, but that's really an nginx + passenger compiled together, so I'm not counting it, although it may be a good option for some people.)
A larger site may then add specialized layer 7 hardware (NetScaler, F5, ...) in front of the servers.
Upvotes: 1