我有使用Passenger + Nginx的RoR应用程序。
我也有ImageMagick用于图像的常规任务。
在某一天(昨天 - 明天)我看到我的应用程序崩溃了,万一内存不足!
ImageMagick写入日志'无法分配内存'。
当我检查空闲内存时,我发现只有大约120MB空闲。 (摘要是1GB)。
大多数部分使用乘客。
我重新开始了,一切都变好了。
这是什么原因?
答案 0 :(得分:1)
首先,您是否使用了ImageMagick的所有功能,如果不将ImageMagick更改为MiniMagick(您节省了部分内存)。
下一步图像处理,你如何使用图像?总是可以异步执行(在cron中使用resque / sidekiq / rake任务 - "较小的解决方案"),你可以节省一些MB ..
乘客,对记忆要求很高。尝试像Thin / Puma这样的小东西。
您确定,您的代码没有内存泄漏吗?如果你正在使用ruby 2.1+,有几种工具可以检测它,例如excelent article,或者如果没有,尝试使用Java内存分析器在JRuby中运行你的应用程序,例如VisualVM < / p>
其他一些问题需要考虑,你真的需要完整的Rails吗? Rails很大,需要很多内存,可能Sinatra或简单的API Grape就足够了......