Check out this new Phusion Passenger 4.x series. It has much, MUCH improved performance, stability and features that rivals that of Unicorn, Puma, etc. It's used by the likes of New York Times, Symantec, AirBnB, etc.
The main reason why people use Phusion Passenger is because of its ease of use. The way it integrates into Apache and Nginx is unlike other app servers and saves a lot of administration time and effort.
Our reason to use the Passenger Enterprise version is that it's the only truly reliable application server for Ruby that handles threads good enough. The administration tools and how it handles stuff like deployment upgrades to a huge application server are done remarkably better than in any other Ruby app server.
Update process loads our application once and forks it to all the workers like Unicorn does. Puma wanted to load the application as many times as we had workers, which caused a huge spike every time we deployed.
Same goes to the thread handling. It really seems Passenger is the only Ruby server able to handle massive loads with threaded Rails app. Money well spent.
How can we improve Phusion Passenger? We're very open to feedback from HN readers. If you have any suggestions, please let us know. If you have any questions about it please feel free to ask.
1. Does nginx spdy module is enabled by default?
2. Sometime ago you said that Ruby 2.0 has some bugs you suggested to wait for next Ruby 2.0 patch release. Is this still the case?
1. No, but you can easily enable it by yourself by choosing option "(2) I want to customize my Nginx installation. (for advanced users)" in passenger-install-nginx-module. Arbitrary Nginx configuration is fully supported. We're going to enable SPDY by default in a future versions.
2. Yes. Phusion Passenger 4 fully supports Ruby 2.0 so it doesn't prevent you from using it, but you may run into Ruby 2.0 bugs, e.g. https://bugs.ruby-lang.org/issues/8100. We recommend staying with 1.9.3 until the next Ruby 2.0 patchlevel, but the choice is yours.
That would be nice, as mono processes sometimes hang and you have to restart the server. Could be nice if this is done automatically. Do you know of any alternatives for mono?
If the phusion passenger people built a plugin for cpanel that gave easy installation and configuration of ruby/pythons app, I really think it could disrupt the php monopoly on cheap hosting for mid level web devs.
Deployment would be vastly eased to the same php strategy of "just ftp the files to the server and visit the website".
As an admin who unfortunately has to deal with "cheap hosting" quite often I'd say "Please, NO!" to that.
I don't think RoR and "cheap hosting" are compatible. RoR adds a maintenance overhead that kills the "cheap" part.
I did admin work for RoR "cheap hosting" and it sucks; lots of gems and multiple versions of them to install etc; this took a lot of my time and made security audits very hard, plus it's not always trivial to install them as some require NEW everything.
Whereas with PHP, 99,9% of the applications run just fine with a relatively simple PHP installation: e.g. core + xml, mysql, imap, gd, mbstring, mcrypt. Update it every once in a while and you're all set!
What RoR programmers need is a cheap vps/container with RVM (or similar) or very specialised platforms (e.g. Heroku).
We have 15-20 apps that all run different versions of gems (including Rails 1-3) and it can be a nightmare. Nobody ever decided to use RVM or anything like that. A while ago you could update a gem and break 3 apps.
I can't imagine wheat it'd be like on a shared host with 100 apps all made by different people.
> A while ago you could update a gem and break 3 apps.
You aren't using bundler, are you? You really really should be. It eliminates the vast majority of that class of problem. It's been best practice in Rails, and ruby deployment in general, to use bundler for several years now, it really does make that kind of problem go away.
It is possible to use Bundler even in Rails2 -- if you are getting a lot of pain from that class of problem, it might be worth it.
Although, really, Rails 2.3x stops getting even security updates very soon, it might make more sense to focus all your energy on getting off Rails 2 -- although I know very well how incredibly painful that is. You're in for pain no matter what, sadly.
I really like the general out-of-bound work feature, however I have a hard time imagining a use-case that is not garbage-collection, and that wouldn't be better solved by having a background worker process. Can anyone suggest some situations?
In theory it can be used for any kind of work that cannot be (easily) passed to another process, and that would block all threads. Another use case that I can think of is generating garbage collection statistics. But perhaps the community can find more use cases, we made it general so that people can be creative. :)
The main reason why people use Phusion Passenger is because of its ease of use. The way it integrates into Apache and Nginx is unlike other app servers and saves a lot of administration time and effort.