目標達成: 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 だと、次第に遅くなっている感じもするな…。まぁ、目標目指して放置しよう。