减少 Mongrel Rails 内存占用并提高性能?
-
21-08-2019 - |
题
我的 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 尚未提供),但我们仍然看到内存占用较小。内存是我们进行切换的最初首要原因,但还有其他好处,例如更快、更轻松地进行扩展或缩小配置等。