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 任せだけど、その部分に匹敵する程、クロールも難題だね。

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

クロール可能なドキュメント数

近頃はクロールさせっぱなしにしたりと、負荷テストみたいなのが多い感じ。ここ数日試していたのが、クロール用データを格納するのに H2 を利用しているのだけど、組み込み H2 で何件くらいクロールできるのかを確認してみた。スペック的には Pentium Dual-Core E2140 1.6G でメモリが 1G くらい(Dell Vostro です)。試した感じでは 15 万件あたりでクロールがほとんど進まなくなった。そんなわけで、標準の Fess (クロールにH2を使った場合) では 1 台あたり 10 万件以下をインデックスするのが良いでしょう。それじゃ、10万件を越える場合はどうするかというと、Solr サーバーを 1 台立てて (配布物からwebapps/fess*を削除したもの)、複数台のクロール用 Fess (配布物からwebapps/solrとか削除したもの) を構築すれば良いでしょう。そんな感じでやれば、Solr の限界値までインデックス化はできると思います。

という感じではありますが H2 でなく、MySQL とかをクロール用データベースに使う場合はどうなのかが気になるので、S2Robot を MySQL でも動くようにしてみました。というわけで、これでクロールを再度し続け中・・・。