减少Mongrel Rails内存占用空间&提高性能?

时间:2009-05-13 19:45:03

标签: ruby-on-rails jruby mongrel memory-footprint

我的rails网站运行Mongrel,我遇到了正在使用的内存量问题。我的ruby-bin进程占用了大约66 MB的驻留内存。如何减少rails使用的内存量?

如果以这种速度吃内存,那么在一台机器上运行许多rails服务器并不是很经济。我的php5 fcgi进程位于15-25 MB之间。

我对RoR相当不熟悉,会使用JRuby的帮助吗?任何有助于减少内存占用和提高性能的评论都非常受欢迎。

4 个答案:

答案 0 :(得分:7)

您可以查看Phusion PassengerRuby Enterprise Edition,这是目前Rails应用程序事实上的标准设置。其目标之一是减少内存使用。它比拥有一堆Mongrels更简单。

答案 1 :(得分:3)

如果你没有为apache绑定别的东西,我也会尝试使用Phusion Passenger的nginx。如果您担心内存使用情况,您应该看到nginx占用的空间小于apache,最新版本的Passenger将为您轻松下载,编译和安装nginx。

答案 2 :(得分:3)

您还可以使用Thin替换您的杂种进程,这更有效,并且最近已在其垃圾收集(通过事件机器)中进行了修补,以使其更好。

我们在nginx前端后面使用精简集群,效果很好。

答案 3 :(得分:1)

我不会说乘客是事实上的标准,但它正在获得很大的吸引力。我们刚刚切换到Nginx + Passenger,我们的ruby应用程序(即Mongrels vs. Passenger)内存占用量从大约450MB降至295MB。它可以减少,因为Passenger会在它们闲置时停止触发(这是可配置的),但当然如果你正在获得流量并且它正在使用你配置的所有实例,那么它们将相应地耗尽内存

请注意,我们尚未在配置中使用Ruby Enterprise Edition(主要是因为它尚未在Engine Yard上提供),但我们仍然看到更小的内存占用。内存是我们进行切换的最初首要原因,但还有其他一些好处,例如更快,更简单的扩展或缩小配置等等。