Gitlab 6.0已于昨天发布。我很好奇他们为什么从Unicorn切换到Puma。5之前的版本使用的是Unicorn。我认为改用Puma更好。
此切换是否有技术原因?
GitLab B.V.首席执行官,我同意宏利的评论,即“如果有问题,则很可能在Gitlab的代码中出现。”我们试图修复它们,但GitLab是最大的开源Rails应用程序之一,并且是难以复制的问题。因此,最后我们选择了最实用的解决方案,改回Unicorn。我们喜欢彪马(Puma),独角兽(Unicorn)和乘客(Passenger),并认为它们都是很棒的软件。
commit 3bc484587提供了一些来自Mathieu 'OtaK' Amiot的线索:
我们从GitLab 5.4中的Puma切换到GitLab 6.0中的独角兽。
为什么再次切换回独角兽?
Puma在具有多个并发用户的系统上运行多线程时,导致100%CPU和更大的内存泄漏。那是因为人们使用了MRI。使用Puma时必须使用JRuby或Rubynius。否则,世界就会崩溃。
Mathieu adds in the comments:
是的,在MRI设置上,独角兽更好(但更需要记忆)。在Rubinius和JRuby上,Puma更好,仅此而已。
他们不能强迫人们使用Ruby Runtime的其他实现,因此对于大多数设置,他们只是恢复到最佳设置:) –
随之而来的轻争议:
Puma的多线程在MRI上工作正常。我说这是Ruby Enterprise Edition的作者之一,所以我知道Ruby的线程系统由内而外。Evan Phoenix,彪马的作者,has also stated that using Puma with MRI works just fine。
如果有问题,那么很可能在Gitlab的代码中。
话虽这么说,在2020年4月,Puma is now available as an alternative web server to Unicorn with GitLab 12.9((在mbomb007中由the comments提及)
[Mathieu 'OtaK' Amiot comments:
乘客并不像大多数人想象的那样稳定。 Nginx + Unicorn更稳定,恕我直言。 –
我们每天都有大量使用开放源代码和企业版Phusion Passenger的大型用户,并且具有极大的稳定性和成功性。想想《纽约时报》,37signals,摩托罗拉,UPS,苹果,AirBnB。他们中的一些人甚至转而离开了Unicorn,转而支持旅客(开源或企业级)]
[2014年8月更新:关于“ Running GitLab 7.1 using Puma instead of a Unicorn”的文章]