7 ms·
I'm one of the authors behind Phusion Passenger (https://www.phusionpassenger.com/ https://www.phusionpassenger.com/), a polyglot web server for Ruby, Python an
by FooBarWidget 13y ago
I'm one of the authors behind Phusion Passenger (https://www.phusionpassenger.com/ https://www.phusionpassenger.com/), a polyglot web server for Ruby, Python and Node.js.
We've recently written a comprehensive comparison between Puma and Phusion Passenger, which you can read here: https://github.com/phusion/passenger/wiki/Puma-vs-Phusion-Passenger https://github.com/phusion/passenger/wiki/Puma-vs-Phusion-Pa...
The comparison covers things like concurrency models, I/O models, security, clustering, multi-app support, documentation, memory usage, performance and more. Although the comparison is between Puma and Phusion Passenger, a lot of the points are relevant to a Unicorn-Puma comparison as well.
- nwienert 13y agoYou've done a great job posting Passenger links all over this thread. I find it in poor taste come into a semi-related post and repeatedly spam links to your product over and over...
- speleding 13y agoMy first thought upon reading the article was: "I wonder how this compares to Passenger?". I find it very helpful to get an authoritative link from the Passenger guys themselves in this thread. Since Passenger is by now pretty much the default way to run a Ruby stack I don't think any one here doesn't know who they are and so they really do not need to spam. They are just contributing to the discussion and I appreciate that.
- Legion 13y agoOne linking post is fine. Three comments full of Passenger links is pushing good taste.
- _neil 13y agoIs Passenger really the default for most people? I tried it once and honestly prefer just dropping thin or unicorn behind nginx. And with this discussion, I'll probably be trying out puma in the near future.
- FooBarWidget 13y agoAnd you definitely should try Unicorn and Puma. We never said that Unicorn and Puma are bad technologies. In fact, we think they're good technologies. That said, we also think that there are many reasons why one would prefer Phusion Passenger (either open source or Enterprise) over Unicorn or Puma. One thing that some people don't know about Phusion Passenger is that it is versatile. Phusion Passenger Standalone is a mode, specifically designed to be dropped behind Nginx, just like Thin/Unicorn/Puma. That is a good alternative if you don't like the Apache/Nginx integrated modes.
- FooBarWidget 13y agomwienert, my apologies if it came over as spamming. The reason why I put an introduction in those posts is because last time I posted comments about Phusion Passenger people told me that I should introduce myself as being an author of Phusion Passenger. And as you've noticed in this thread (and not just on HN, see e.g. http://stackoverflow.com/questions/18398626/why-did-gitlab-6-switch-back-to-unicorn/18398991?noredirect=1#comment27147253_18398991 http://stackoverflow.com/questions/18398626/why-did-gitlab-6...), I actually say some very favorable things about Puma, and I thought that people will appreciate it if they know that it came from someone who writes web servers instead of just some random commenter. But I see your point, and I'll keep it in mind. If I can edit my other posts I would remove some links but unfortunate HN has already frozen them.
- moe 13y agoPlease stop making your comparisons sound as if passenger-free was a fully functional application server such as unicorn or puma. It is not. Passenger-free is a deliberately crippled demo-version. If someone wants to use passenger in production they will have to pay $50 USD per year, per server for it. And you know that very well. The 'free' passenger drops requests and serves 502 errors to the users during every single deploy. That's equivalent to popping up shareware nag-screens into my face at random intervals. Except phusion passenger doesn't nag me, it nags my customers. You call the avoidance of these errors a 'feature' ('rolling restarts') that must be paid for. For some reason your helpful comparisons never mention that both unicorn[1] and puma[2] ship with this basic functionality out of the box. One could almost think it is part of your sales strategy to have people notice this little 'limitation' only after they already deployed your product to production... [1] http://www.justinappears.com/blog/2-no-downtime-deploys-with-unicorn/ http://www.justinappears.com/blog/2-no-downtime-deploys-with... [2] http://blog.nicolai86.eu/posts/2013-02-06/phased-restarts-using-puma http://blog.nicolai86.eu/posts/2013-02-06/phased-restarts-us...
- ericb 13y agoMost apps where you would be concerned with downtime have load balancers in front of them. This isn't burning fire you make out because you can pull one app server out of the pool, restart and then put it back in once it is restarted. We do this by using keepalived and renaming a chk.txt file in the root.
- trustfundbaby 13y agoI think thats a little harsh. I've been using Passenger since it was called Apache mod_rails http://www.concept47.com/austin_web_developer_blog/ruby-on-rails/mod-rails-passenger-20-rc2-released-even-more-stable/ http://www.concept47.com/austin_web_developer_blog/ruby-on-r... you have to remember that before the Phusion guys showed up, there was no easy way to run a rails server without proxying requests to mongrel, thin or something like that. instances could bloat in memory or die and your app could, for whatever reason, go down and you wouldn't know it. Did I mention that rails apps were also pretty slow back then? They made deploying and maintaining rails an order of magnitude easier with Passenger, first with the mindblowingly simple installation process and later by introducing ideas like killing and spinning up new app instances after xxx requests, or spinning instances up or down depending on activity. All this with simple configuration switches out the box. Even the advances in Passenger 4 are pretty amazing (threaded mode, and out-of-band garbage collection, come to mind) What I'm saying is, they've done a lot for the Rails ecosystem and while I'm not a fan of their new pricing strategy with Passenger or their marketing tack with Puma posts on this thread, I think its worthwhile to be a bit more gentle in chiding them because of their peerless contributions in the past ... plus their link is actually a very well written comparison
- mrmondo 13y agoWe just moved our ruby apps (puppet, Redmine,gitlab) from apache passenger to puma + nginx because passenger is awful - it's slow, bloated and it eats memory.
- mrmondo 13y agoOk sorry I re-read that and I sounded quite loaded, I was actually a bit miffed that someone from passenger posted on this puma thread but I suppose they have the right to. We didn't have a great experience with passenger, it does seem bloated and we decided to move away from apache to nginx for similar reasons. Tldr; We've been very happy with our move from passenger to puma.
- FooBarWidget 13y agoI'm interested in what sort of problems you had with Phusion Passenger. What makes you say it is slow and bloated? We've even had users who switched away from Puma and Unicorn for the exact same reasons you mentioned. But in our experience the app server is rarely the cause of such problems. Most people who complained about bloat in Unicorn/Puma/Passenger eventually discovered that it was a problem at the application level after all. We'd be happy to help you with your issues if you can tell us more.
- derengel 13y agoI can understand Ruby and Python, but why nodejs?
- FooBarWidget 13y agoWhy not Node.js?
- derengel 13y agoBecause nodejs already has a high performance http server and a cluster module.
- FooBarWidget 13y agoThe point of serving Node through Phusion Passenger is not performance, but supervision, stability, robustness, security, multitenancy, etc. Although Phusion Passenger can increase performance by load balancing requests between multiple nodes. Please see https://github.com/phusion/passenger/wiki/Node.js https://github.com/phusion/passenger/wiki/Node.js for reasons to use Phusion Passenger with Node. The cluster module is great, but it requires you to manage your processes yourself and to write your own load balancer. Phusion Passenger provides all this functionality for you for free, through a C++ core.