小编vio*_*ech的帖子

Ruby,Mongodb,Anemone:可能存在内存泄漏的网络爬虫?

我最近开始学习网络爬虫,我用Ruby,AnemoneMongodb构建了一个样本爬虫来存储.我正在一个庞大的公共网站上测试爬虫,可能有数十亿个链接.

crawler.rb正在索引正确的信息,但是当我检查活动监视器中的内存使用情况时,它会显示内存不断增长.我只运行了爬虫大约6-7个小时,内存显示为1.38GB的mongod和1.37GB的Ruby进程.它似乎每小时左右增长约100MB.

好像我可能有内存泄漏?它们是一种更优化的方式,我可以实现相同的爬行而不会使内存升级失控,从而可以运行更长时间吗?

# Sample web_crawler.rb with Anemone, Mongodb and Ruby.

require 'anemone'

# do not store the page's body.
module Anemone
  class Page
    def to_hash
      {'url' => @url.to_s,
       'links' => links.map(&:to_s),
       'code' => @code,
       'visited' => @visited,
       'depth' => @depth,
       'referer' => @referer.to_s,
       'fetched' => @fetched}
    end
    def self.from_hash(hash)
      page = self.new(URI(hash['url']))
      {'@links' => hash['links'].map { |link| URI(link) },
       '@code' => hash['code'].to_i,
       '@visited' => hash['visited'],
       '@depth' => hash['depth'].to_i,
       '@referer' => hash['referer'],
       '@fetched' => hash['fetched']
      }.each …
Run Code Online (Sandbox Code Playgroud)

ruby memory-leaks web-crawler mongodb anemone

7
推荐指数
1
解决办法
2594
查看次数

标签 统计

anemone ×1

memory-leaks ×1

mongodb ×1

ruby ×1

web-crawler ×1