所以我的rails应用程序存在可怕的内存泄漏问题。我在Heroku上运行它,在过去的几天里,我一直试图弄清楚究竟是什么导致了它,我不得不每隔5个小时不断重启应用程序,或者内存超过512我的应用程序崩溃了。
我正在使用Oink,而且我没有看到任何与我的实例化类有关的东西。唯一的问题是,每次加载页面时,使用的内存都会增加。它加载哪个页面甚至不重要,它看起来是随机的。
New Relic也没有多大帮助,因为它与任何一个特定的控制器动作没有关系。
我唯一能找到的就是使用ObjectSpace,它在内存中显示了大量的字符串对象,而且这个数字只会增长和增长。我使用了一个小工具来记录字符串的值,它们都是空白的。不是......而是空白。我的生产应用程序经常使用超过200,000个字符串对象。
有谁知道这些可能来自哪些?这真的让我感到非常紧张,因为每隔五个小时就必须在我的电脑上工作以保持我的网站活着。
谢谢!
答案 0 :(得分:9)
好吧,这绝对是荒谬的,但经过两周的焦虑和挣扎,我找到了解决这个漏洞的方法。它完全归结为这一行:
ActionMailer::Base.delivery_method = :smtp
在我的application.rb配置文件中。
应该是:
config.action_mailer.delivery_method = :smtp
我不知道怎么弄错了,但是男孩对我的应用程序造成了严重破坏。
有谁知道为什么会导致这样的问题?我在每次查询时都丢失了大约1兆字节的内存。疯狂。