rake任务内存泄漏(rake task memory leak)

2019-09-26 05:02发布

我有一个是随着时间的推移吞噬我所有的系统内存长时间运行rake任务? 什么是跟踪了我的问题,并获得它的底部的最快方法?

使用im导轨2.3.5,1.8.7红宝石,Ubuntu的上slicehost和MySQL 5。

我有Rails应用程序工作正常。 我有一个运行了一夜,不使用活动记录吨作品(一些外部调用到Twitter,谷歌等,以及大量的数据库调用的,随着时间的推移该作业生长在内存大小近4演出每晚工作。我需要图为什么耙任务没有释放memeory。

我开始寻找到bleak_house,但它似乎复杂的设置和处理不当已超过一年更新一次。 我不能让它在本地工作,以便即时不愿意生产尝试。

由于乔尔

Answer 1:

投掷了两个想法。 首先,如果你是循环,因为这工作的一部分,确保你不会抓着你不需要对象的引用,因为这将防止它们被收集。 如果你做,从你的阵列,或任何其删除。 此外,把一个周期性GC.start到你的循环,以此来看看它只是没有得到周围GC-ING。

第二个想法是,Ruby没有GC的符号,因此,如果您的API客户端存储值作为符号,你可以用一个巨大的和不断增长的一套符号,将永远不会被重新使用结束。 符号是微小的,但微小的东西还是可以积少成多。

当然,比你需要不加载更多的对象。 使用#find_each加载分批AR对象,如果你有遍历很多很多。



文章来源: rake task memory leak