3 ms·
I really don't like making statements relative to other app servers. Each app server has its own merits and we believe people should decide things for themselve
by FooBarWidget 16y ago
I really don't like making statements relative to other app servers. Each app server has its own merits and we believe people should decide things for themselves by running their own benchmarks and tests. However this question has been asked so many times that I'm inclined to answer in order to avoid confusion and in order to encourage people to test things independently.
There exists a belief among some people that Unicorn is faster than Phusion Passenger 2. We've tested this a while ago and it turned out that they're evenly matched. Unicorn's speed is on par with Mongrel's. Unicorn's shared socket helps with fairly load balancing requests between processes but its positive effect on performance is not always significant. We've actually experimented with shared sockets and found that, when done improperly, it can actually hurt performance thanks to the thundering herd problem and the fact that catching EINTR in Ruby is expensive. All of Unicorn's I/O is handled in Ruby. A lot of Phusion Passenger's I/O is handled in C++. Instead we've opted to optimize our global queuing implementation to reach the same load balancing effect while speeding things up.
Phusion Passenger 3's speed surpasses Phusion Passenger 2 by far. You draw your own conclusions.
Of course you can take my answer with a grain of salt. I encourage you to verify these findings yourself.
- FooBarWidget 16y agoI meant EAGAIN, not EINTR.