5

所以我有一个可怕的内存泄漏问题的rails应用程序。我在 Heroku 上运行它,在过去的几天里,我一直在试图弄清楚到底是什么原因造成的,我不得不每 5 小时左右不断重启应用程序,否则内存超过 512 和我的应用程序崩溃。

我正在使用 Oink,我的实例化类没有任何可疑之处。唯一的问题是,每次加载页面时,使用的内存都会增加。我加载哪个页面都没有关系,它似乎是随机的。

New Relic 也没有太大帮助,因为它与任何一个特定的控制器动作无关。

我唯一能找到的是使用 ObjectSpace,它显示了内存中大量的字符串对象,而且这个数字还在不断增长。我使用了一个小工具来记录字符串的值,它们都是空白的。不是零……而是空格。我的生产应用程序经常使用超过 200,000 个字符串对象。

有谁知道这些可能来自什么?这真的让我不得不每五个小时在我的电脑前才能让我的网站保持活力。

谢谢!

4

1 回答 1

9

好吧,这绝对是荒谬的,但经过两周的焦虑和挣扎,我找到了解决这个泄漏的方法。从字面上看,这一切都归结为这一行:

ActionMailer::Base.delivery_method = :smtp

在我的 application.rb 配置文件中。

它应该是:

config.action_mailer.delivery_method = :smtp

我不知道我是怎么弄错的,但是男孩确实对我的应用程序造成了严重破坏。

有谁知道为什么这会导致这样的问题?我在每个查询中都损失了大约一兆字节的内存。疯狂的。

于 2012-11-27T08:05:01.007 回答