Sitemapsに対応

S2Robot で半年以上放置してきたサイトマップ対応をしました。sitemaps.xml とかをクロールの対象としてクロールすると、そのサイトマップのリンクを次のクロール先として展開します。対応するフォーマットとしては、XML Sitemaps、XML Sitemaps Index とテキスト(URLリスト)です(RSSとかは未対応)。というわけで、S2Robot もまた一つ成長しました 🙂 これに合わせて、Fess もサイトマップを使えるようになりました。URL として指定すれば、サイトマップのリンクをクロール対象にすることができます。Fess 2.0.0 もぼちぼちリリースしても良いかな、っと思い始めています。

目標達成: 100万ドキュメント

目標としていた100万ドキュメントのクロールおよびインデックス化を達成することができました。先月くらいからあれやこれやとチューニングをし続け、ようやく達成できました。テストするにも1回やると数日かかるので、かなり時間がかかってしまいました。まぁ、クロール部分に自前で作っている S2Robot を利用していて、これが汎用的であったのも良かったかな。どれくらいの負荷でテストしたかというと

  • 同時実行のクロール設定数: 5
  • 1クロール設定のスレッド数: 5
  • 1クロール設定の間隔: 1000ミリ秒

というような感じの設定で Fess(Solr込み) を 1 台(Athlon X2 Dual Core BE-2350, Mem 6G)で 4 日半くらいかかりました。長い戦いだった(がんばったな)。

っで、その環境と並行して、もっとハイエンドな環境を想定してテストもしてみた。Fess(クロール専用、Solrなし)を1台、Solrを1台の2台構成。しかも、Fess のクロールデータ保存用のDBはH2でなく、MySQLを利用した。同じ設定で流したら、100万ドキュメントを1日半くらいで処理してた…。速い…。そんな感じで、台数を使えばもっとドキュメント数はいけるだろうね。

引き続き、パフォーマンスを改善をしていくつもりだけど、ひとまず、目標としていたものを達成できたので達成感もあるね~(いやー、よくやった)。っで次は3000万ドキュメントをできるような環境を作りたいな(さすがにこれは1台では目指さないと思うけど)。この3000万は○○gle Mini の上のアプライアンスがマックスの上限値みたいだからそこを目指してみる。

1.2 -> 2.0

次は Fess 1.2 として、リリースしようと思っていたけど、大幅に機能が拡張されているし、2.0 とした方が適切な気がしてきました。Solr 1.4 を適用したら 2.0 にしようと思っていたけど、それは 3.0 にでもしようかな。

100万ドキュメントへの挑戦

-Xmx512m くらいでやるとだいたい50万件のドキュメントをSolrに突っ込んだところで、GC 多発により停止してしまうので調査してみた。まともなログも取れないので、ヒープダンプして、jhat で内容みたら、すぐに分かった。FileのdeleteOnExitメソッドが大量によばれていて、ヒープが一杯になっていたみたい。というわけで、それを修正して、再テスト中。25スレッドを1秒間隔で2日くらい動かしている感じで、60万件を越えたところ。あと 2 日くらいすれば、ひとまず、目標の100万件に達するだろうか。H2 だと、次第に遅くなっている感じもするな…。まぁ、目標目指して放置しよう。

パフォーマンス改善

近頃、師走な感じに忙しい。Fess についてはパフォーマンスチューニングが中心な作業。現在、Fess 1.2 の機能的にはほぼ一段落しているので、今のゴールは 1 台の Fess で 100 万ドキュメントを目指している(複数台使えば別にいけるとは思うけど)。H2 のあと、MySQL に変えてやってみた感じだと、30 万ドキュメントくらいでクロールが止まる感じになる。そんな感じだったので、クロールとSolrへのドキュメント投入まわりの処理をいろいろと変更してみたりした。そんなわけで、H2 でも数十万ドキュメントにいけるのではと思ってます(クロール設定のコツはあるのだけど)。という感じで、目標の 1 台で 100 万ドキュメントを達成したら、Fess 1.2 をリリースしようかなっと考えてます(まぁ、Google ○iniが30万ドキュメントまでなので、数十万ドキュメントで妥協してリリースするかも(^^;)。

半年くらい前までは、ちょろっとクロールして Solr に投げればいいんじゃないかとクロール機能を甘く見ていたのだけど、大量のドキュメントを相手にすると手強いな~。インデックス作成は Solr 任せだけど、その部分に匹敵する程、クロールも難題だね。

という感じで、やってますので、興味がありましたら、スナップショットリリースを試していただいて、コメントをいただけるとうれしいでーす。