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