2011年6月29日水曜日

anemoneの使用時のメモリ問題解決法

anemoneを使ってページ全体をクロールしようとするとメモリをやたら食います。
どうやらこれはデータをメモリにキャッシュしているかららしい。

というわけで、キャッシュをmongodbに保存するようにして、解決する。

まずはyumリポジトリを追加
# sudo vim /etc/yum.repos.d/10gen-mongodb.repo

name=10gen Repository
baseurl=http://downloads.mongodb.org/distros/centos/5.4/os/x86_64/
gpgcheck=0
enabled=0
これを書きこんで保存。

で、必要なものをインストール。
# sudo yum install mongo-10gen mongo-10gen-server
# sudo gem install bson_ext SystemTimer

で、起動する。
# sudo /etc/init.d/mongod start

mongodbを使うように書きなおす。

require 'rubygems'
require 'anemone'

# mongodbを使うのとquery_stringsは取得しないように設定。またアクセス間隔を2秒にする。
  opts = {
   :storage => Anemone::Storage.MongoDB,
   :skip_query_strings => true,
   :delay => 2,
  }

Anemone.crawl("http://example.com/", opts) do |anemone|
 anemone.on_every_page do |page|
   puts page.url
  end
 end
end

参考;
http://work.blog.eggplant.org.uk/2011/03/web-anemone.html

0 件のコメント:

コメントを投稿