Just to be clear (not sure if you're kidding) but people use Passenger (and production application servers in general) not just because they meet some minimum throughput threshold.
Passenger takes care of keeping your application alive, makes sure slow clients don't break it, automatically handles concurrency and has low latency. That's just the basics, there's a lot of configuration options for the more serious deployments.
Sure, but at a few thousand visitors a month that clocks in around one request every 10 minutes or so. I'm not saying they shouldn't use Passenger or another production app server (I use Unicorn fronted by nginx personally), but it'd honestly probably be fine with Webrick. I'm also not saying that Webrick is what they'd want to be on since it doesn't really have any supervision or real smarts.
As a (primarily) developer who is also in the DevOps "space", I'm wondering if anyone knows Phusion's usage popularity over "rolling your own" (unicorn) or Paas (Heroku) usage?
The enterprise features seem really great, although per server charging is definitely in the Enterprise range of $$$ !
People dramatically underestimate the amount of time necessary to support a complex project like Passenger. Phusion earns every dime of that Enterprise pricing.
I think they built their popularity by being the first really easy way to use Rails with Apache. And by being a solid, well documented, easy to use product.
Heroku and Passenger aren't mutually exclusive.[1] Heroku users must choose an app server. Heroku currently recommends Puma,[2] even for apps that aren't thread safe.[3] I don't know why they don't recommended Passenger.
I really like Passenger for my dev servers, because you can easily run both Ruby (Rails) and Python (WSGI) applications under it. I'm not aware of another mainstream app server that offers that flexibility.
So what about the hybrid concurrency model--specifically the multithreading, which seems to be enterprise only? Would one expect even higher throughput than what's shown in the charts?
Multithreading is documented as enterprise only. Whether it helps throughput depends on your app's workload. If your app spends a lot of time waiting on IO, such as the database or external HTTP API calls, then yes it will likely improve throughput. Otherwise it won't improve throughput, though it can reduce memory usage.
It's because of Passenger's built-in short-term HTTP cache, which is included in the open-source version. That said, the performance gain from the charts is from caching; it's not going to make your Ruby code run 4x faster. Be sure you read https://blog.phusion.nl/2015/02/09/turbocaching-security-cha... to make sure you don't accidentally end up serving things from a cache that you intended to not be cached/shared.
26 comments
[ 0.26 ms ] story [ 75.7 ms ] threadPassenger takes care of keeping your application alive, makes sure slow clients don't break it, automatically handles concurrency and has low latency. That's just the basics, there's a lot of configuration options for the more serious deployments.
Passenger and Puma (from Passenger): https://github.com/phusion/passenger/wiki/Puma-vs-Phusion-Pa...
It also probably means that the server is on a $5 VM, so memory pressure is also a concern.
The enterprise features seem really great, although per server charging is definitely in the Enterprise range of $$$ !
[1] https://github.com/phusion/passenger-ruby-heroku-demo
[2] https://devcenter.heroku.com/changelog-items/594
[3] https://devcenter.heroku.com/articles/deploying-rails-applic...
It would be really nice to a see comparison including both the open source and enterprise versions.
Everything you read about is open source, unless explicitly documented as enterprise only.