6

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

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

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

4

4 回答 4

7

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

于 2009-05-13T19:51:26.190 回答
3

如果您不依赖 apache 做其他事情,我也会尝试使用 Phusion Passenger 的 nginx。如果您担心内存使用情况,您应该会看到 nginx 的占用空间比 apache 小,并且最新版本的 Passenger 将为您下载、编译和安装 nginx,而不会让人头疼。

于 2009-05-13T20:59:44.597 回答
3

你也可以用更高效的Thin替换你的 mongrel 进程,它最近在其垃圾收集(通过 eventmachine)中进行了修补,以使其更好。

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

于 2009-05-14T11:48:01.850 回答
1

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

请注意,我们还没有在我们的配置中使用 Ruby 企业版(主要是因为它在 Engine Yard 上还没有),但我们仍然看到较小的内存占用。内存是我们进行切换的最初首要原因,但还有其他好处,例如更快、更轻松地进行扩展或缩减配置等。

于 2009-05-14T07:33:58.060 回答