我想知道是否将Apache2 + Passenger的Rails应用程序移植到Nginx + Passenger是值得的。 我们这样做的主要原因是释放RAM或处理给定数量的RAM的更多请求。
有谁知道Nginx + Passenger在使用RAM时效率如何?
答案高度依赖于:
设置nginx + Passenger非常简单。 只需在云服务器或虚拟机上快速安装每个环境,并运行一些基准测试工具。
但是,一般来说,最大的RAM消费者是您的Rails应用程序,而不是Web服务器。 如果您关心内存使用情况,那么比较Ruby实现或减少代码使用的Gem /插件/库的数量,或者减少使用的Web服务器模块的数量,您的时间会更好。
有人对每个并发连接的Nginx和Apache内存利用率进行了基准测试 。 Nginx是明显的赢家。 但是应该注意的是,在大约4000个并发连接上,该图上的最高内存利用率仅为〜40MB。 在大多数情况下,即使是单个Rails实例,占用的空间也比较小,而且在一台服务器上实现4000个并发的Rails请求的可能性不大。 因此,切换到Nginx是次要的,但主要的是,如果您还没有转换到Ruby Enterprise Edition ,那么尝试减少应用程序的内存占用量,因为您的Rails应用程序将使用比这两个Web服务器。
例如,我在生产环境中运行Apache / Passenger / REE,甚至在REE改善了内存占用的情况下,我的Rails应用程序使用的内存也是Apache的13倍,正如乘客内存统计报告所示 。