パフォーマンス改善

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

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

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

sa-struts-archetypeでmobylet対応

sa-struts-archetype 1.0.4-sp7.1 をリリースしました。変更点は mobylet 対応です。use-mobylet を true としてあげれば、mobylet 対応の SAStruts プロジェクトがさっくり作れます。実行方法は

mvn archetype:generate -DarchetypeRepository=https://www.seasar.org/maven/maven2/ \
-DarchetypeGroupId=org.seasar.sastruts -DarchetypeArtifactId=sa-struts-archetype \
-DarchetypeVersion=1.0.4-sp7.1 -DgroupId=sample.app -DartifactId=sample \
-Dversion=0.1.0 -Duse-mobylet=true

というような感じです。groupId、artifactId、version は適当に変えてください。あとは、DBFlute も使いたければ、-Duse-dbflute=true もお忘れなく 🙂

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

近頃はクロールさせっぱなしにしたりと、負荷テストみたいなのが多い感じ。ここ数日試していたのが、クロール用データを格納するのに 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 でも動くようにしてみました。というわけで、これでクロールを再度し続け中・・・。