Rails应用程序中的内存泄漏...字符串噩梦

Ste*_*win 5 memory string memory-leaks ruby-on-rails heroku

所以我有这个rails应用程序有一个可怕的内存泄漏问题.我在Heroku上运行它,在过去的几天里,我一直试图弄清楚究竟是什么导致了它,我不得不每隔5个小时不断重启应用程序,或者内存超过512我的应用程序崩溃了.

我正在使用Oink,而且我没有看到任何与我的实例化类有关的东西.唯一的问题是,每次加载页面时,使用的内存都会增加.它加载哪个页面甚至无关紧要,它看起来是随机的.

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

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

有谁知道这些可能来自哪些?这真的让我感到非常紧张,因为每隔五个小时就必须在我的电脑上工作才能让我的网站保持活力.

谢谢!

Ste*_*win 9

好吧,这绝对是荒谬的,但经过两周的焦虑和挣扎,我找到了解决这个漏洞的方法.它完全归结为这一行:

ActionMailer::Base.delivery_method = :smtp
Run Code Online (Sandbox Code Playgroud)

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

应该是:

config.action_mailer.delivery_method = :smtp
Run Code Online (Sandbox Code Playgroud)

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

有谁知道为什么会导致这样的问题?我在每次查询时都丢失了大约1兆字节的内存.疯.

  • @MihaRekar太可怕了.我确实需要经过几个月的提交,加载和启动每个提交,然后使用Apache基准测试工具的请求锤击服务器,直到我发现没有任何问题的修订.然后我逐件删除每个更改,直到找到使泄漏停止的那个.花了好几天. (2认同)