减少 Mongrel Rails 内存占用并提高性能?
Posted
技术标签:
【中文标题】减少 Mongrel Rails 内存占用并提高性能?【英文标题】:Reduce Mongrel Rails Memory Footprint & Increase performance? 【发布时间】:2010-10-25 23:48:20 【问题描述】:我的 Rails 站点运行 Mongrel,我遇到了正在使用的内存量的问题。我的 ruby-bin 进程正在使用大约 66 MB 的常驻内存。如何减少 Rails 使用的内存量?
如果多个 Rails 服务器以这种速度消耗内存,那么在一台机器上运行多个 Rails 服务器不是很经济。我的 php5 fcgi 进程位于 15-25 MB 之间。
我对 RoR 相当陌生,使用 JRuby 会有帮助吗?任何有助于减少内存占用和提高性能的 cmets 都非常受欢迎。
【问题讨论】:
【参考方案1】:您还可以用Thin 替换您的杂种进程,它更高效,最近已在其垃圾收集(通过事件机器)中进行了修补,使其变得更好。
我们在 nginx 前端后面使用瘦集群,效果很好。
【讨论】:
【参考方案2】:我不会说乘客是事实上的标准,但它正在获得很大的吸引力。我们刚刚切换到 Nginx+Passenger,我们的 ruby 应用程序(即 Mongrels vs.Passenger)内存占用从大约 450MB 下降到 295MB。它可以减少更少,因为如果乘客空闲(这是可配置的),乘客将杀死 procs,但当然,如果您获得流量并且它正在使用您配置的所有实例,那么他们将相应地使用内存.
请注意,我们还没有在我们的配置中使用 Ruby 企业版(主要是因为 Engine Yard 上还没有它),但我们仍然看到内存占用更小。内存是我们进行切换的首要原因,但还有其他好处,例如更快、更轻松地进行扩展或缩减配置等等。
【讨论】:
【参考方案3】:如果您不依赖 apache 做其他事情,我也会尝试使用 Phusion Passenger 的 nginx。如果您担心内存使用情况,您应该会看到 nginx 的占用空间比 apache 小,并且最新版本的 Passenger 将为您下载、编译和安装 nginx,并且不会让您感到头疼。
【讨论】:
【参考方案4】:您可能会查看Phusion Passenger 和Ruby Enterprise Edition,这是目前Rails 应用程序事实上的标准设置。它的目标之一是减少内存使用。这也比拥有一堆杂种更简单。
【讨论】:
+1 我支持 REE 建议,因为它包含 MBARI 补丁,使其消耗更少的内存。那 or 1.9 也使用较少。还要确保尽可能运行 32 位操作系统。以上是关于减少 Mongrel Rails 内存占用并提高性能?的主要内容,如果未能解决你的问题,请参考以下文章
带有 RVM 的 Rails mongrel 无法启动 - mongrel_rails (MissingSourceFile)
如何在 Mongrel 下重启 Rails,而不停止和启动 Mongrel
何时使用 Mongrel 作为 Rails 应用程序的 Web 服务器?