A Comparison of Ruby Application Servers, Part 2 – Performance
blog.engineyard.com
blog.engineyard.com
Honestly, I'm surprised anybody still talks about Passenger 3 nowadays. The improvements in 4 are so huge that 3 shouldn't even be worth looking at.
Also, the tests don't seem to say how the servers are configured. Passenger's out-of-the-box configuration is designed to conserve resources, not performance, because a lot of our users are on low-memory VPSes. It needs a few minor tweaks to optimize for performance like Unicorn is. With settings like these, it behaves almost exactly like Unicorn:
# 'x' is whatever your Unicorn worker count should be
passenger_max_pool_size x;
passenger_min_instances x;
passenger_pre_start_url http://yourapp.com/-1 seems like the author didn't use EM-friendly sleeps & http clients when appropriate.
-1 not clear if the author used a separate, in-DC machine for load testing or his laptop, and what the CPU looked like on the test machines during those tests. If they're sitting idle at 20% usage because RTT between your desk and EC2, that's not a great test. Additionally, it takes some sysctl tuning to really make OSX able to run a decent number of requests/s necessary for load testing of any type.
There needs to be a mantra: Benchmarks are hard.
- Tested Twitter instead.
One of the key thing to remember when doing experiment/benchmark is to control variable, now EC2 performance is variable that you cant control.
Does anyone know where to get reliable information on using different webservers specifically on the JRuby stack, specifically the beefier Java options?
Benchmarks are hard, and it's a lot easier to be confident about results if others can easily repeat the experiments.
my understanding of Ruby is limited to JRuby[on Rails] 1-hour demonstration i saw 10 years ago, and somehow the result above doesn't surprise me and is very consistent with my absolutely uneducated opinion of Ruby and its ecosystem.