【问题标题】:Reducing Redmine's memory usage - Low Hanging Fruit减少 Redmine 的内存使用 - 低悬的果实
【发布时间】:2011-02-11 00:57:54
【问题描述】:

我正在使用Passenger 和Nginx 运行Redmine 实例。由于数据库中只有少数问题,Redmine 消耗了超过 80mb 的 RAM。

谁能分享减少 Redmine 内存使用的技巧。 Redmine实例被3个人使用,我愿意牺牲速度。

【问题讨论】:

  • 不是一个解决方案,但是,如果您不使用 REE(并且使用 ruby​​ 1.8.7),请尝试一下,对于我的应用程序,它是 30% 的内存折扣。

标签: ruby-on-rails performance redmine ram


【解决方案1】:

没有真正低垂的果实。如果有,默认情况下我们已经包含并激活了它们。

80 MB RSS(相对于可能更大的虚拟大小)实际上相当不错。在正常运行中,每个进程将使用 70 到 120 MB 的 RSS(取决于部署模型,而乘客则很少)。

正如 andrea 所建议的,使用 REE(Ruby 企业版,也是免费的)可以将总内存占用减少大约三分之一。但是这种节省只有在您运行多个进程(每个进程都需要上述内存)时才能实现。 REE 通过针对一种称为 Copy on Write 的技术优化 Ruby 来实现这一节省,从而使额外的应用程序进程占用更少的内存。

很抱歉,您的(假设的)128 MB 虚拟服务器可能不够用。对于小型安装,您可能可以将最小安装压缩到 256MB,但在 512MB(包括数据库)时,它只是开始变得非常痛苦。

这是因为 Rails 应用程序的工作方式与 PHP 相比。它们需要一个正在运行的应用程序服务器实例。该实例通常能够一次响应一个请求,始终使用大约相同数量的内存。所以你的内存消耗大致相当于你运行的应用程序进程的数量,与实际负载无关。但是如果你适当地调整你的系统,你可以从一个进程中获得相当多的请求/秒。

【讨论】:

  • 好的,我明白了。我已经在使用 REE。到目前为止,160 MB(基于 WebFaction 计划)对于 Redmine 和我们使用 Redmine 的小型 Django 项目来说已经足够了。当 Django 应用程序上线时,这可能会改变。
  • 对于 Django 应用程序,您可以通过绕过 Django 并直接从 Apache 或 Nginx 提供静态媒体文件来节省一些开销。你对 Ruby 有什么类似的建议吗?
  • @aantn:由于您已经在使用 nginx+passenger,这正是正在发生的事情。静态文件直接由 nginx 提供服务,动态请求转发给乘客,由 rails 回答。
【解决方案2】:

可能是我回复得很晚,但我遇到了同样的问题,我找到了一个优化 ruby​​/rails 内存使用的链接,这对我有用

http://community.webfaction.com/questions/2476/how-can-i-reduce-my-rubyrails-memory-usage-when-running-redmine

这可能对其他人有帮助。

【讨论】:

    猜你喜欢
    • 2010-10-03
    • 2021-06-30
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2011-09-22
    相关资源
    最近更新 更多