Gitlab 6.0昨天发布了。我很想知道为什么他们从Unicorn切换到Puma。 5之前的版本使用Unicorn。我认为切换到Puma是为了更好。
这种转换有技术原因吗?
答案 0 :(得分:30)
commit 3bc484587提供了Mathieu 'OtaK' Amiot的一些线索:
我们从GitLab 5.4中的Puma切换到GitLab 6.0中的独角兽。
在具有许多并发用户的系统上运行多线程时,Puma导致100%的CPU和更大的内存泄漏。为什么要再次切换回Unicorn?
那是因为人们使用MRI。使用Puma时必须使用JRuby或Rubynius。否则世界就会崩溃。
Mathieu adds in the comments:
是的,独角兽在MRI设置方面更好(但记忆力更强) 彪马在Rubinius& amp; JRuby,就是这样。
他们不能强迫人们使用Ruby Runtime的其他实现,所以他们只是回到大多数设置的最佳设置:) -
随之而来的是轻微的争议:
Puma的多线程在MRI上工作得很好 我说这是Ruby Enterprise Edition背后的作者之一,因此我从内到外了解Ruby的线程系统 Evan Phoenix,Puma的作者,has also stated that using Puma with MRI works just fine。
如果有问题,那么很可能是Gitlab的代码。
Mathieu 'OtaK' Amiot comments:
乘客并不像大多数人想象的那样稳定。一个nginx + Unicorn更稳定恕我直言。 -
我们每天都有很多大型用户使用Phusion Passenger,包括开源和企业,稳定性和成功率很高。
想想纽约时报,37signals,摩托罗拉,UPS,Apple,AirBnB。他们中的一些人甚至转而离开Unicorn,转而使用Passenger(开源或企业)
2014年8月更新:有一篇关于“Running GitLab 7.1 using Puma instead of a Unicorn”的文章
答案 1 :(得分:11)
GitLab B.V.首席执行官在这里,我同意Hongli的评论,如果有问题,那么他们可能会使用Gitlab的代码。"。我们尝试修复它们,但GitLab是最大的开源Rails应用程序之一,也是难以重现的问题。所以最终我们选择了最实用的解决方案,转而使用Unicorn。我们喜欢Puma,Unicorn和Passenger,并认为它们都是很棒的软件。