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 名無しさん@お腹いっぱい。 2008/02/18(月) 00:21:25
lib/crawler.rb の適当なところに GC.start 挟めば膨れなくなるよ。
GC されてなかったんですね!
というか、image_utils.rb の 99 行目にかかれてる GC.start がコメントアウトされてるのはなぜ?
99 #GC.start
ちなみに、Fastladder 最新版(svn にあるやつ)は修正されているらしいです。