关于nginx对Apache2的内存占用量减少了多少?

时间:2011-04-08 17:11:33

标签: ruby-on-rails ruby apache2 nginx

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

有没有人知道Nginx + Passenger在使用RAM方面有多高效?

1 个答案:

答案 0 :(得分:7)

答案高度依赖于:

  • 您已启用的网络服务器模块
  • 您使用的Ruby的实现(例如Ruby Enterprise Edition vs MRI)
  • 您应用的流量模式。

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

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

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

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

the growth rate of memory usage vs concurrent connections is starkly larger with apache