最適化処理

インデックスの登録や更新などの操作を確定して検索結果に反映させるには、コミットが必要です。コミットを繰り返してインデックスが複数のセグメントに分割されると、検索性能が低下してしまいます。

Luxor最適化処理の設定

最適化処理は、Solr自身が用意している機能となります。Luxor Ver.2.0以降では、Solr自身の最適化処理に対して、インデックスの更新後、最適化処理を実施するまでの間隔時間を指定することで、最適化処理を自動で実行することが出来ます。

インデックス最適化処理のデフォルトでは、インデックスの更新発生後、30分1800(秒)経過後に自動で実行されます。

最適化処理の設定ファイル

  • 設定ファイル:setup.conf
  • ファイルパス:/root/luxor.2.X/setup.conf

※Ver.2.1を例にしています。各リビジョンに合わせ、読み替えてください。

名称 初期値 説明
optimizeInterval 1800(秒) 自動最適化を実施するまでの間隔を指定する。
・初期値の1800(秒)では、インデックスの更新(削除)発生後、30分経過後に自動で最適化を実施する。
・自動最適化の処理を停止する場合、"0"を指定する。値が大きいと、最適化処理によるサーバ負荷を軽減できるが、最適化しないままでは検索パフォーマンスが劣化する。

従来Solrの最適化処理

自動最適化処理設定パラメータoptimizeIntervalを"0"に設定することより自動最適化処理を停止する場合、Solrの最適化処理を手動で実施することも可能です。手動で最適化を行うには、Luxorサーバにて下記コマンドを実行します。定期処理cronコマンドにより、夜間バッチで実行する運用も可能です。

# curl “http://<LuxorサーバのIPアドレス>:10080/solr/<core名>/update?optimize=true”

また、コマンドCurlの代わりにブラウザのアドレスバーに下記のURLを指定しても最適化できます。

http://<LuxorサーバのIPアドレス>:10080/solr/<core名>/update?optimize=true

※ core名とは、INSUITE®やSm@rtDBの機能毎に分かれている設定やインデックスの保持を行う単位のことです。Ver.2.0.3以降ではコアの代わりにコレクションの表現となります。詳しくは、Luxor管理画面の記載よりご参照ください。

最適化処理のステータス確認方法

インデックスの最適化処理(optimizeInterval)は、サーバへの負荷がかかり、検索パフォーマンスを低下させる可能性があります。Ver.2.0.3以降より、About画面にて最適化処理が実行中であるかのステータス確認方法を用意しています。確認方法の詳細に関しては、「LuxorのAbout画面」の「インデックス最適化処理のステータス確認」よりご参照ください。

最適化処理の注意点

  • 最適化コマンドの実行時、Luxorサーバの物理メモリ使用率は高くなります。また、ディスク容量はインデックスサイズの二倍以上のサイズが必要となります。大量の更新が発生する重い処理であることを事前に把握した上で、最適化コマンドを実行してください。
  • 長期にわたって最適化処理を行わない場合、検索速度の劣化やOSのファイルディスクリプタ制限への抵触などの問題が発生する恐れがあります。
  • 最適化処理は、ディスク上のインデックスサイズ肥大化を改善することで検索性能向上につなげる仕組みとなります。インデックス自身の不整合問題は解決できません。