【问题标题】:About how much of a memory footprint reduction does nginx give over Apache2?nginx 比 Apache2 减少了多少内存占用?
【发布时间】:2011-04-08 17:11:33
【问题描述】:

我想知道将 Rails 应用程序从 Apache2 + Passenger 移植到 Nginx + Passenger 是否值得。我们这样做的主要原因是为了释放 RAM 或为给定数量的 RAM 处理更多请求。

有谁知道 Nginx + Passenger 在使用 RAM 方面的效率大概多少?

【问题讨论】:

  • 您是否有充分的理由不能同时设置两者并自己进行基准测试?
  • 不,没有,除了节省时间和设置优先级。
  • 一般来说,你会看到使用 nginx 可以节省一些费用。多少因情况而异。

标签: ruby-on-rails ruby apache2 nginx


【解决方案1】:

答案很大程度上取决于:

  • 您已启用的 Web 服务器模块
  • 您使用的 Ruby 实现(例如 Ruby 企业版与 MRI)
  • 应用的流量模式。

设置 nginx + Passenger 非常简单。只需在云服务器或虚拟机上快速安装每个环境,并针对它们运行一些基准测试工具。

不过,一般来说,最大的 RAM 消耗者是您的 Rails 应用程序,而不是 Web 服务器。如果您担心 RAM 使用情况,最好花时间比较 Ruby 实现或减少代码使用的 gem/插件/库的数量,或减少使用的 Web 服务器模块的数量。

每个并发连接的 Nginx 与 Apache 内存利用率的某人 did a benchmark。 Nginx 是明显的赢家。但应该注意的是,在大约 4000 个并发连接时,该图上的最高内存利用率仅为约 40MB。在大多数情况下,40MB 的占用空间甚至比单个 Rails 实例还要小,而且您不可能在单个服务器上实现 4000 个并发 Rails 请求。因此,次要切换到 Nginx 是值得的,但首先,如果您还没有切换到 Ruby Enterprise Edition,那么您应该尝试减少应用程序的内存占用,因为您的 Rails 应用程序将使用比这些 web 中的任何一个更多的内存服务器。

例如,我在生产中运行 Apache/Passenger/REE,即使 REE 改进了内存占用,我的 Rails 应用程序使用的内存是 Apache 的 13 倍,据 passenger-memory-stats 报告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2016-11-09
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 2021-07-21
    • 2012-08-25
    相关资源
    最近更新 更多