问题
Gitlab 6.0 was released yesterday. I am curious to know why they switched to Unicorn from Puma. Versions prior to 5 were using Unicorn. I thought switch to Puma was for the better.
Is there a technical reason for this switch?
回答1:
GitLab B.V. CEO here, I agree with Hongli his comment that "If there are issues then they are likely in Gitlab's code.". We tried to fix them but GitLab is one of the largest open source Rails applications and the issues where hard to reproduce. So in the end we opted for the most pragmatic solution, switching back to Unicorn. We love Puma, Unicorn and Passenger and think they are all fantastic pieces of software.
回答2:
The commit 3bc484587 offers some clues from Mathieu 'OtaK' Amiot:
We switched from Puma in GitLab 5.4 to unicorn in GitLab 6.0.
why switch back to Unicorn again?
Puma caused 100% CPU and greater memory leaks when running mult-ithreaded on systems with many concurrent users.
That's because people used MRI. You MUST use JRuby or Rubynius when using Puma. Or else the world breaks apart.
Mathieu adds in the comments:
Yes, Unicorn is better (but more memory-eager) on MRI setups.
Puma is better on Rubinius & JRuby, that's all.They can't force people to use other implementations of the Ruby Runtime, so they just fell back to the best setup for most setups :) –
Light controversy ensues around:
- Puma: Hongli comments:
Puma's multithreading works just fine with MRI.
I say this as one of the authors behind Ruby Enterprise Edition, so I know Ruby's threading system inside-out.
Evan Phoenix, Puma's author, has also stated that using Puma with MRI works just fine.If there are issues then they are likely in Gitlab's code.
- Phusion Passenger Enterprise:
Mathieu 'OtaK' Amiot comments:
Passenger is not as stable as most people think. A nginx + Unicorn is more stable IMHO. –
Hongli answers:
We have lots and lots of large users using Phusion Passenger, both open source and Enterprise, on a daily basis with great stability and success.
Think New York Times, 37signals, Motorola, UPS, Apple, AirBnB. Some of them even switched away from Unicorn in favor of Passenger (either open source or Enterprise)
Update August 2014: there is an article on "Running GitLab 7.1 using Puma instead of a Unicorn"
来源:https://stackoverflow.com/questions/18398626/why-did-gitlab-6-switch-back-to-unicorn