【问题标题】:Phusion Passenger consumes a lot of RAMPhusion 乘客消耗大量 RAM
【发布时间】:2014-11-11 20:42:20
【问题描述】:

我有使用Passenger + Nginx 的RoR 应用程序。

我也有 ImageMagick 用于一些常规的图像任务。

有一天(昨天-明天)我看到我的应用程序崩溃了,以防内存不足!

ImageMagick 写入日志“无法分配内存”。

当我检查空闲 RAM 时,我发现只有大约 120MB 空闲。 (总结为 1GB)。

大部分使用乘客。

我已经重启了,一切都好了。

这可能是什么原因?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 nginx passenger


    【解决方案1】:
    1. 首先,你是否使用了ImageMagick的所有功能,如果没有将ImageMagick改为MiniMagick(你节省了一部分内存)。

    2. 接下来的图像处理,您如何处理图像?您总是可以异步执行(cron 中的 resque/sidekiq/rake 任务 - “较小的解决方案”),您也许可以节省一些 MB..

    3. 乘客,对内存要求很高。尝试更小的东西,比如 Thin / Puma。

    4. 您确定您的代码没有内存泄漏吗?如果您使用的是 ruby​​ 2.1+,有几个工具可以检测它,例如 excelent article,或者如果没有,请尝试使用 Java 内存分析器在 JRuby 中运行您的应用程序,例如 VisualVM

    需要考虑的其他问题,您真的需要完整的 Rails 吗? Rails 很大,需要相当多的内存,也许Sinatra 或者对于简单的 API Grape 就足够了...

    【讨论】:

    • 感谢您的精彩回复! 1. 不错的建议,我会考虑的。 2. 当管理员在管理面板中执行某些操作时调用的方法。 3.哦。我读了很多关于Passenger 的好回复,但现在我会得到关于其他服务器的信息) 4. 将首先尝试建议。 5. 我真的需要 Rails。辛纳屈的能力太小了……
    • 但主要问题是为什么乘客不返回内存?
    • 我已经写过了,你没有提供太多信息。这就是我的回答如此笼统的原因。如果您有无内存泄漏的代码(如果乘客内存要求提高,可能您没有没有内存泄漏的代码,它可能在您的代码中或您的一些宝石中) ,乘客有时会返回内存,这取决于 GC 和空闲时间服务器有多少......
    猜你喜欢
    • 1970-01-01
    • 2014-08-25
    • 2011-12-09
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多