新手问题 rake 任务运行一段时间后被 killed

neversion · May 04, 2014 · Last by miclle replied at May 06, 2014 · 2585 hits

在 rails rake 中写爬虫任务,需要长时间运行。发现每执行一段时候后终端直接显示“已杀死”,然后就没有然后了。stackoverflow 上提到的貌似是内存占用过多的问题。之后重新执行该任务,用 top 监控内存占用情况,确实存在内存占用稳步上身的问题,执行了 40 分钟,内存占用达到 27%。

想了解下是不是因为我的程序写的有问题导致内存占用不断提升?由于程序太长无法贴到这里,是不是在 ruby 中有哪些坑会导致内存不释放?

不一定是程序的问题,也有可能是服务器内存太小。加点内存试试。程序的话就主要看是不是创建了大量的对象,然后长时间保持对对象的引用使它们无法被垃圾回收。

#1 楼 @tylerlong 已经有 8G 的内存了... ruby 有没有哪些情况是会导致内存占用过多且不释放的?

#2 楼 @neversion

@tylerlong 所言极是,你这个很有可能是赋了过多的全局对象,无法释放。可试试这里的办法查之:

http://ruby-china.org/topics/9737

@tylerlong @lyfi2003 多谢回复,我试下。

我之前爬数据是放到 sidekiq 里,效率高很多

You need to Sign in before reply, if you don't have an account, please Sign up first.