加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在Heroku上找到内存泄漏?

发布时间:2020-12-16 20:45:20 所属栏目:百科 来源:网络整理
导读:我有一个Rails 3.2.8应用程序运行在Heroku雪松与Ruby 1.9.3.该应用程序运行正常,当它启动,但一天左右的连续使用后,我开始看到我的日志上的R14错误.一旦内存错误开始,即使应用程序空闲了几个小时,它们也不会消失. 垃圾收集器应该在一段时间后清理未使用的对象
我有一个Rails 3.2.8应用程序运行在Heroku雪松与Ruby 1.9.3.该应用程序运行正常,当它启动,但一天左右的连续使用后,我开始看到我的日志上的R14错误.一旦内存错误开始,即使应用程序空闲了几个小时,它们也不会消失.

垃圾收集器应该在一段时间后清理未使用的对象,减少内存负载?似乎这在Heroku没有发生.通常,尽管结果是分页的,但是在运行了几千行数据的一些报告之后,内存使用开始上升.

如何找到内存泄漏?像bleak_house这样的插件已经过时了,不能在Heroku环境中运行得很好.可以调整GC设置,使其更具侵略性吗?

解决方法

GC应该清理干净,也许可以做.

您可以使用GC.start强制GC.如果许多物品没有被收集,这将会,但我怀疑这不是问题.

有可能你以某种方式创建一堆对象,而不是通过保存缓存的副本或某些东西来释放它们?

我不熟悉现有的检查工具,但您可能希望使用ObjectSpace检查哪些对象存在.例如:

ObjectSpace.each_object.with_object(Hash.new(0)){|obj,h| h[obj.class] +=1 }
# => a Hash with the number of objects by class

例如,如果您为某个课程获得了意外的数字,那么您将更好地了解在哪里寻找.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读