INFORMATION
テクノロジ
Solr ベンチマーク特集 第2回 インデクシング編
西潟 一生 著
これまでのあらすじ
これから Solr を運用し始める人にとって,Solr が必要とするリソースはどの程度なのか,といった点は真っ先に知りたい情報の 1 つだと思います。
前回は主にインデクシングの速度や,インデックスサイズについて述べてきましたが,今回はバイナリファイル(PDF)のインデクシング速度,分散環境にした際やオートコミット時のインデクシング速度についてお伝えしたいと思います。
目次
※ 以下に示すベンチマーク結果によって生じたあらゆる損害などについては,理由の如何を問わず,弊社は一切の責任を負わないことを予めご了承下さい。
ベンチマーク環境
ベンチマークに使用したマシンや Solr の環境は前回と同様です。詳細については,前回の記事をご覧下さい。
バイナリファイル(PDF)のインデクシング
前回はプレーンテキストファイルを POST ツールを使ってインデクシングした結果を示しました。今回はそのプレーンテキストファイルを PDF ファイルにした場合のインデクシング速度を見てみたいと思います。ここでいう PDF ファイルのインデクシングとは,SolrCell を使った PDF のインデクシングを指します。PDF に記述されている内容については前回利用したプレーンテキストと同様です。比較のために,プレーンテキストをインデクシングした時間も合わせて示します。なお,今回はインデクシングするドキュメント数は 1 万件のみとしました。
結果は時間が短いほど良い結果です。これを見ると,PDF インデクシングはプレーンテキストよりも 10% 弱ほど悪化したと言えますが,そこまで大きく変わらない結果となりました。技術的な問題で MSOffice ファイルを大量に作成することができなかったため,これらのファイルでは結果がどうなるのかは分かりませんが,少なくとも PDF ではこのような結果になりました。
分散環境(SolrCloud)のインデクシング
次に分散環境でインデクシング速度がどのように変化するのか見てみましょう。マスター/スレーブ構成における分散インデクシングは,別々の Solr サーバに対して,独立したドキュメントをインデクシングすることになるため,結果について示したところで特に意味のないものになってしまいます。従って,SolrCloud 環境で果たして本当にインデクシング速度が変化するのか見てみたいと思います。
インデクシング対象とするファイルは前回同様プレーンテキストファイル 1 万件で,これを POST ツールを使ってインデクシングした結果を示します。まずは以下に,シャードが 1 と 2 の時のインデクシング時間の違いを示します。SolrCloud の構成は以下の通りです。
結果は上述同様,時間が短いほど良い結果です。これを見ると,2 シャードの方が悪い結果となっています。ドキュメントの数自体は,正しく両方のシャードに分散されていたので,分散検索は正しくできそうです。SolrCloud はそのアーキテクチャ上,どのノードにドキュメントをポストしても,分散してインデクシングされるような仕組みになっているのですが,この方法ではインデクシング時間の短縮は望めなさそうです。これは,シャード 2 はクライアントから一旦ドキュメントを受け,シャード 1 用のドキュメントだと判断された場合は,シャード1に再ポストしていることが原因と考えられます。
では,やはりマスター/スレーブと同様に各シャードに対してポストすればインデクシング速度は向上するのでしょうか?恐らくその方法でも,再ポストがされ,向上は望めないでしょう。一番確実な方法はドキュメントルーティングを活用する方法です。ドキュメントルーティングとは,Solr ポスト時にドキュメントをどのシャードに登録するか明示する方法です。詳細についてはマニュアルをご覧下さい。この方法を使ってインデクシングした結果を以下に示します。ポスト方法はこれまで通り POST ツールを使用しています。
リニアではないですが,シャードが増えるとインデクシング時間が減ることが確認できました。
上述の結果は,レプリカを使用していません。参考までに,レプリカを使用した場合の結果を以下に示します。この結果は Solr のデフォルト設定にて測定したものです。
オートコミット(ハードコミット)時のインデクシング時間の変化
最後にオートコミット(ハードコミット)の設定を変更した時にどの程度インデクシング速度に影響するか簡単に見ていきましょう。このベンチマークでは,POST ツールを使い前回同様のプレーンテキストファイル 1 万件をインデクシングします。その際のオートコミットの設定で maxDocs を 10 にした場合と, 10000 にした場合を比較した結果を示します。その他はデフォルト設定としています。(openSearcher は false)
違いが出やすいように 10 件毎にコミットをする設定としましたが,今回のテストセットだと,10000 万件毎にコミットする場合と比べて 10% ほど悪化することが分かりました。この結果ではインデクシング速度のみ観察し,CPU やメモリの状況は見ていません。今回の測定のように,余りにも短すぎるコミット間隔は Solr への負荷が大きいため,少なくともデフォルト設定以上の値とした方が良いでしょう。リアルタイム性の高いコミットが必要な場合は,ソフトコミットの利用を検討すると良いでしょう。
以上,簡単ではありましたが,インデクシング時の性能について概観してみました。全体として,思ったほど極端に性能が劣化しなかった印象でした。次回はクエリ時のベンチマークをご紹介していきたいと思います!
INFORMATION
KandaSearch
KandaSearch はクラウド型企業向け検索エンジンサービスです。
オープンAPIでカスタマイズが自由にできます。
セミナー
企業が検索エンジンを選定する際のポイントから、
実際の導入デモをお客様ご自身でご体験!