ruby on rails内存泄漏

时间:2013-03-18 06:05:08

标签: ruby-on-rails ruby memory-leaks

rails 2.3.14,ruby 1.8.7

我有一个佣金任务:

    Post.all.each do |post|

      post.comments.each { |pc|
        pc.delete
      }
      user = post.user

      pc = user.comment.build(
          :text => 'Test text',
      ......
      )
      result = pc.send_comment_http

      if result.success?
        pc.save!
      else
        puts error_message
      end
    end

帖子有100k行和任务运行50h alredy,每3秒在db中添加一行,这不是问题,但ps -ax | grep rake表示占用2 gb。什么可能是内存泄漏的问题?

2 个答案:

答案 0 :(得分:3)

评论的迭代。您可以通过以下方式避免第二个循环:post.comments.destroy_all

此外,当用户发表评论时,我可以看到它与帖子无关(因为用户可以有很多帖子,对吗?),因此您可以分割操作。首先直接截断评论表,第二个截取与帖子相关的用户(您可以使用joingroup by,或者只使用join,如果您希望每个帖子发送一个消息),第三次循环用户并发送消息。

答案 1 :(得分:2)

使用

Post.find_each do |post|
  ...    
end