Fastladderクローラのメモリ使用量を10分の1以下にするハック
Fastladderがオープンソースになったとかならなかったとかで、MacBookにインストールしてみたよ。 ためしに人気の300件とかサイトをOPMLでぶち込んであそんでたら、くろうらがメモリ700MBとかもりもり食べているので、そっこーでkill
ssig33に指摘されて気づいたけど、どうやらfavicon取得とかしてメモリに持っている模様。 faviconとかそんな物いらないよ、とか笑いながらくろうらを改造しました。
改造といっても難しいことをするわけではなく
FASTLADDER/lib/crawler.rb
にあるくろうらの211行目から213行目をコメントアウトするだけ。
211 # if favicon = fetch_favicon(feed) 212 # Favicon.find_or_create_by_feed_id(feed.id).update_attribute(:image, favicon) 213 # end
あら不思議、これでメモリ使用量が40MBくらいになりました。 すばらしいですね。 それにfavicon取得しないので、くろうるが速くなるし、メモリ使用量は減るしでいいことずくめです。
まぁ、favicon取得は新規サイトを登録した時だけだろうと思うので、たぶん2回目以降のくろうるからはメモリ使用量は大して変わらないと思いますけどね。
まぁよく調べてないので知りませんが、このハックでFastladderが爆発したとか、livedoor退職した人にビール瓶で殴られたとか、そういうことは対処しかねますのであしからず。 トラックバックしてくれれば、もう少しソース解析とかしてみたりします。
追記
2chからのTrackbackとか始めて!こんな事できるのか サーバー型RSSリーダー比較スレ
876 名無しさん@お腹いっぱい。 [sage] 2008/02/18(月) 00:21:25 lib/crawler.rbの適当なところにGC.start挟めば膨れなくなるよ。
GCされてなかったんですね! というか、image_utils.rbの99行目にかかれてるGC.startがコメントアウトされてるのはなぜ?
99 #GC.start
ちなみに、Fastladder最新版(svnにあるやつ)は修正されているらしいです。