gpt4 book ai didi

ruby-on-rails - 我怎样才能找到 Heroku 上的内存泄漏?

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:55 25 4
gpt4 key购买 nike

我有一个 Rails 3.2.8 应用程序在 Heroku Cedar 上运行,使用 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

例如,如果您的某个类(class)得到了意外的数字,您会更好地了解去哪里寻找。

关于ruby-on-rails - 我怎样才能找到 Heroku 上的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13311930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com