Hacker News new | comments | show | ask | jobs | submit login

Here's a short list of things Phusion Passenger 4 supports that are not found in Unicorn or implemented better than in Unicorn:

- Support for multiple Ruby interpreters inside the same instance. But to be fair Unicorn is designed to be run in a different way so this may or may not be an advantage for you.

- JRuby support.

- Python support, and in the future more languages.

- Dynamically adjust the number of processes based on traffic.

- Real-time disk-backed response buffering, first introduced in 4.0 beta 1. Unicorn relies on web server buffering which tends to buffer the entire response before sending it to the client. Phusion Passenger 4 allows you to use Rails 4 streaming with ease, without blocking the server on slow clients, with good performance and without configuration.

- Phusion Passenger Enterprise supports multithreading, allowing you to use it for I/O-bound, long-running requests. Unicorn is strictly single-threaded multi-processing only and can only be used for short-running fast requests, by design.

- Rolling restarts (as implemented in Enterprise) are more automated and efficient than in Unicorn. Phusion Passenger Enterprise restarts processes one-by-one and only requires 1 config line. Unicorn's rolling restarts temporarily requires double memory. You can make it restart one-by-one but it requires manual scripting work involving signals.

- Out-of-Band Work. This is like Unicorn's Out-of-Band GC, but is more flexible: you can perform any arbitrary work (not just GC), and it also works with multithreaded programs. Phusion Passenger also spawns a new process before performing Out-of-Band Work so that your visitors never have to wait. - Deployment error resistance (Enterprise feature). - Live IRB console (Enterprise feature). - Commercial support with guaranteed response times.

I wrote this response quickly so I may have missed some things. If anybody spots any inaccuracies, please let me know.

I think you're actually missing the main reason why people use Passenger: ease of deployment.

Not having to manage Unicorn forks, processes, sending USR2 signals etc is the reason why I use Passenger. I personally couldn't care less about the fancy features.

While I can concede the initial setup, once you've got it all scripted, it's not that bad. Either mina or capistrano make managing unicorn fairly painless.

As to the Phusion release, congrats. While I use unicorn, I always welcome alternatives. It means the ecosystem is healthy.

Thank you very much for such an elaborate reply!


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact