Gitlab 6.0昨天发布。我很想知道他们为什么从Puma转到Unicorn。5 之前的版本使用Unicorn。我认为切换到Puma会更好。
这个开关有技术原因吗?
Gitlab 6.0昨天发布。我很想知道他们为什么从Puma转到Unicorn。5 之前的版本使用Unicorn。我认为切换到Puma会更好。
这个开关有技术原因吗?
2020 年 4 月更新,GitLab 12.10:
Puma 将成为默认应用服务器
GitLab 将在 13.0 中将默认应用程序服务器从 Unicorn 切换到 Puma。
使用 GitLab 13.0(2020 年 5 月):
使用 Puma 减少 GitLab 的内存消耗
阅读下面的最后几节。
原始答案 2013
提交 3bc484587提供了来自Mathieu 'OtaK' Amiot 的一些线索:
我们从 GitLab 5.4 中的 Puma 切换到 GitLab 6.0 中的 unicorn。
为什么再次切换回独角兽?
在具有许多并发用户的系统上运行多线程时,Puma 会导致 100% 的 CPU 和更大的内存泄漏。
那是因为人们使用了核磁共振。使用 Puma 时必须使用 JRuby 或 Rubynius。否则世界就会分裂。
Mathieu在评论中补充道:
是的,独角兽在 MRI 设置上更好(但更渴望记忆)。
Puma 在 Rubinius 和 JRuby 上更胜一筹,仅此而已。他们不能强迫人们使用 Ruby Runtime 的其他实现,所以他们只是退回到大多数设置的最佳设置:) –</p>
轻微的争议随之而来:
Puma 的多线程与 MRI 配合得很好。
作为 Ruby 企业版背后的作者之一,我这么说,所以我对 Ruby 的线程系统了如指掌。Puma 的作者
Evan Phoenix也表示,将 Puma 与 MRI 结合使用效果很好。如果有问题,那么它们很可能在 Gitlab 的代码中。
话虽如此,在 2020 年 4 月,Puma 现在可以作为 Unicorn 的替代 Web 服务器使用 GitLab 12.9
(由mbomb007在评论中提到)
乘客并不像大多数人想象的那么稳定。一个 nginx + Unicorn 更稳定恕我直言。–
我们每天都有大量使用 Phusion Passenger 的大型用户,包括开源和企业版,并且非常稳定和成功。
想想纽约时报、37signals、摩托罗拉、UPS、苹果、Airbnb。他们中的一些人甚至放弃了独角兽,转而使用Passenger(开源或企业)
2014 年 8 月更新:有一篇关于“使用 Puma 而不是 Unicorn 运行 GitLab 7.1 ”的文章
2020 年 4 月更新,GitLab 12.10:
Puma 将成为默认应用服务器
GitLab 将在 13.0 中将默认应用程序服务器从 Unicorn 切换到 Puma。
Puma 是一个多线程的应用程序服务器,允许 GitLab 将其内存消耗减少约 40%。
A> 作为 GitLab 13.0 升级的一部分,自定义了 Unicorn 设置的用户需要手动将这些设置迁移到 Puma。
也可以通过禁用 Puma 并重新启用 Unicorn 来继续使用 Unicorn,直到在未来版本中删除对 Unicorn 的支持。
这要感谢Dmitry Chepurovskiyunicorn
,他为将 Puma Web 服务器添加到 GitLab Helm 图表(即将成为 Web 服务图表)做出了重大贡献。
这项工作为 GitLab Helm 图表的用户提供了使用 Puma 代替 Unicorn 的选项。
在测试中,我们观察到使用 Puma 作为 Web 服务器时内存使用量减少了 40%。
见史诗。
使用 Puma 减少 GitLab 的内存消耗
Puma 现在是基于 Omnibus 和基于 Helm 的安装的默认 Web 应用程序服务器。与 Unicorn 相比,Puma 将 GitLab 的内存占用减少了约 40%,从而提高了 GitLab 的效率并可能为自托管实例节省成本。
已自定义 Unicorn 进程数量或使用较慢 NFS 驱动器的安装可能需要调整默认 Puma 配置。
有关更多详细信息,请参阅有关升级和GitLab 图表改进的重要说明。
GitLab BV CEO 在这里,我同意 Hongli 的评论,即“如果有问题,那么它们很可能在 Gitlab 的代码中。”。我们试图修复它们,但 GitLab 是最大的开源 Rails 应用程序之一,并且问题难以重现。所以最后我们选择了最务实的方案,切换回独角兽。我们喜欢 Puma、Unicorn 和 Passenger,并认为它们都是很棒的软件。