【发布时间】:2015-09-26 15:05:54
【问题描述】:
当我阅读here 时,我一直在寻找新乘客 5 的性能测试,它变得更快了。
我试图找到其他资源来证实这一点,但没有运气。有没有人试过安装它,看看有什么不同?
【问题讨论】:
-
欢迎来到 Stack Overflow。你为什么不第一个尝试它,给我们一个总结,包括基准,这样我们就有了硬数据。
标签: ruby-on-rails ruby nginx passenger
当我阅读here 时,我一直在寻找新乘客 5 的性能测试,它变得更快了。
我试图找到其他资源来证实这一点,但没有运气。有没有人试过安装它,看看有什么不同?
【问题讨论】:
标签: ruby-on-rails ruby nginx passenger
Passenger 5 在自定义基准测试中得分更高,因为它具有内置缓存层(“turbocaching”),可以避免在短时间内针对相同请求实际运行您的应用程序代码;它不会使您的实际应用程序代码运行得更快。此缓存层仅在某些受限制的情况下有效,并且在绝大多数实际情况下不太可能提供太多好处。如果您不小心,缓存层实际上可能最终会破坏您的应用程序 - 我演示了几个 security vulnerabilities 在 5 beta 阶段由于 Phusion 的缓存层(他们以缓存为代价修复了这些问题)层几乎无法缓存)。 IMO,Raptor/Passenger 5 基准测试是欺骗性的营销绒毛,缓存层的存在主要是为了赢得 Hello World 基准测试,您可能应该忽略它们。
也就是说,您的应用程序服务器的速度在您的整体应用程序性能范围内几乎可以肯定是微不足道的。乘客是一个很棒的平台,因为它非常用户友好,文档齐全,有一个绝对出色的安装程序,并且开箱即可为您处理许多烦人的废话。如果您需要它提供的功能并且不想搞砸大量的配置,您应该使用Passenger。如果它不适合您的用例,请使用其他适合的东西。
如果您最关心每一微秒,您应该衡量您的应用程序在各种网络服务器和各种工作负载下的性能,然后选择性能最佳的一个。否则,使用您最喜欢的任何东西,然后在性能成为实际问题时切换。
脚注:如果您使用Passenger 5,请务必阅读Turbocaching security changes 文章,以确保您不会意外地使您的应用程序容易通过涡轮缓存层窃取用户数据(或引入错误)。
【讨论】:
我最近将我的应用从 Puma 迁移到了 Passenger。 我不得不说我对这一举措感到非常高兴,尤其是因为我将它托管在 Heroku 上。
自从我更新到 Ruby 2.2 后,由于 Heroku 内存限制 (512M),我在使用 Puma 时遇到了一些内存问题。 我尝试了几种不同的配置,但没有成功。 自从我搬到Passenger 后,我发现在相同数量的服务器实例(在我的情况下为3 个)的情况下,内存使用量几乎减少了我使用Puma 消耗的一半。
关于响应时间,它似乎与以前几乎相同,但内存有所改进。不过,我减少了 Heroku dyno 的数量以处理相同数量的请求。
总之,根据我的个人经验,Passenger 帮助我大大减少了应用程序使用的内存,但并没有帮助提高平均响应时间。另一个好处是,关于 Heroku 的定价,它帮助我降低了托管成本。
如果没有任何基准等,我知道这篇文章并不是很详尽……但我想也许你会发现从 Puma 迁移到Passenger 的个人经历会很有趣。
希望对你有帮助:)
【讨论】:
首先,让我们明确一点,当我们谈论服务器性能时,问题是随着使用量的增加,服务器的扩展能力如何。如果您的服务器只有一个或很少的人类用户,那么对于大多数应用程序,无论您使用哪台服务器,您都将获得相同的最终用户体验,因为瓶颈将是 Ruby 的性能,而不是应用程序服务器。
对于中型和大型应用:
让我们来谈谈缩放。您拥有的 CPU 能力和 RAM 越多,您可以扩展的越多。大多数服务器用完 RAM 的速度比 CPU 的速度快。所以关键是最小化每个请求使用的 RAM 量。服务器收到的每个请求都将由一个进程或线程处理。进程使用大量 RAM,线程使用很少的 RAM。所以目标很简单,就是拥有大量线程和少量进程。
Puma 和Passenger Enterprise 都是多线程服务器,可扩展性大致相同。 (Passenger 的基准测试声称每个进程使用的 RAM 减少了 5MB,但这可以忽略不计。)Passenger 本身(免费版本)是单线程的,不会像付费的 Passenger Enterprise 版本那样扩展,或者也一样作为彪马。
因此,如果您想要获得最佳性能,您可以在 Puma 和 Passenger Enterprise 之间进行选择。那么问题就变成了,Passenger Enterprise 是否值得财务成本,而 Puma 是否值得技术专长成本。答案取决于您的大脑中的内容、您的银行帐户中的内容以及您的一般机会成本。
如果您不是专业的系统管理员,Passenger Enterprise 有一些不错的工具可以帮助您。 Puma 也有一些工具,但它们不如Passenger Enterprise 提供的强大。如果您想获得与 Passenger Enterprise 相同的控制和洞察力,Puma 需要系统级专业知识。 (您也可以使用 Puma,而无需使用 Passenger Enterprise 的所有花里胡哨,但我想保持这种比较“苹果对苹果”)。
就个人而言,我是一个喜欢配置服务器的低级人员,所以我更愿意用我的时间而不是我的金钱来换取一个很棒的 Ruby 服务器。因此,我使用彪马。如果您对配置低级别的东西不感兴趣(或者如果您是一家意识到软件许可证比管理员开发人员便宜的公司),您最好使用付费的 Passenger Enterprise 许可证。
对于运行 5 美元 VPS(或类似的低资源、低流量环境)的人:
我上面所说的更多是针对具有大量资源的服务器上的高流量应用程序。您只是想通过基础知识来解决问题,因此它并不真正适用于您。
将 Puma 和 Passenger Enterprise 想象成可以非常快速地运送很多人的大型喷气式飞机。这远远超出了您的小应用程序的需求。您真正需要的是相当于本田思域的服务器。为此,您应该考虑免费版的Passenger 或Thin。如果您想要简单的设置和体面的工具,请使用免费乘客。如果您想要类似的性能但愿意设计服务器,请使用 Thin。
在这种情况下,除非您正在寻找挑战,否则我认为没有理由使用免费乘客以外的任何东西。
【讨论】:
正如其他人所说,Passenger 本身并不能让您的应用程序变得更快。乘客本身在版本 5 中变得更快,但应用服务器只是响应时间的一部分。如果您的应用程序很慢,那么Passenger 本身的速度就无关紧要了。
话虽如此,Passenger 与其他应用服务器的区别在于积极帮助您加快应用速度。乘客的涡轮缓存是乘客帮助您的一种方式。文章Dynamic Site as fast as a Static Generated One with Raptor 演示了一个很好的涡轮缓存用例。乘客还提供了一个optimization guide,它为您提供了有关如何使用乘客设置优化您的应用程序的提示。
【讨论】: