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

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

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

有帮助吗?

解决方案

你可能会看看 Phusion 乘客红宝石企业版, ,这是当今 Rails 应用程序事实上的标准设置。其目标之一是减少内存使用。这也比拥有一群杂种人更简单。

其他提示

如果你没有因为其他事情而依赖 apache,我也会尝试使用 Phusion Passenger 来使用 nginx。如果您担心内存使用情况,您应该会看到 nginx 的占用空间比 apache 更小,并且最新版本的 Passenger 将为您下载、编译和安装 nginx,轻松解决您的麻烦。

您还可以将您的杂种进程替换为 薄的 它效率更高,最近在其垃圾收集中(通过 eventmachine)进行了修补,使其变得更好。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top