SolrCloud環境の保守運用

SolrCloudを利用した検索エンジンの運用を長期にわたり継続するには定期的なメンテナンスが必要です。 検索エンジンは複雑なシステムのためその挙動を正確に予測することは困難なので、一般的なトラブルとそれに対する対処について記載します。

検索インデックスの肥大化

検索エンジンのインデックスデータ領域は徐々に増大して大きなディスク領域を占めるようになります。 文書の新規追加に限らず、更新のみのときにも当該文書の旧コンテンツエントリが論理削除され、新コンテンツがインデックスに追加されるためインデックスサイズは増大します。 検索インデックスは複数の「セグメント」に分割されて管理され、一定サイズまで大きくなったセグメントがマージされるタイミングで論理削除されたレコードの占有していたディスク領域が解放されます。 ディスク容量をモニタリングして空き容量が逼迫しないように備えてください。 ディスクス容量の増加によるシステムハングアップを抑制する有効な対策として以下を定期的に実施してください。

ディスク容量に余裕をもたせる

インデックスサイズは徐々に増加していきます。その増加スピードは単調一定ではなく、一気に100GB単位でディスク使用量が増えることもあります。 大きくなったセグメントがマージされる際には最大でインデックス容量の3倍程度までディスク容量が消費されることがあります。

検索エンジンのヒープメモリに余裕をもたせる

インデックスサイズが大きくなるにつれて検索エンジン(Solr)が要求するメモリ容量も大きくなります。 検索エンジンのヒープメモリの使用率をモニタリングして、高い使用率が続くようであればヒープメモリを増加することが効果的です。 検索あるいはインデックス更新処理でエラーが発生し、ログ(solr.log)にEOutOfMemoryexceptionが記録されるようになったらヒープメモリが不足しています。

検索エンジンの再起動を実施する

ディスク容量の逼迫とインデックスサイズの増大が重なるとハングアップを引き起こします。 検索エンジンを再起動することで論理削除によりディスク容量を占めていた旧コンテンツエントリが解放され、インデックスサイズが小さくなることが期待されます。 Fb5Solrサービスを再起動してください。

検索エンジンの予防的再起動をスケジュールする

1~6ヶ月に1回程度の頻度で検索エンジンの再起動を実施することをおすすめします。 検索エンジンの再起動はヒープメモリ不足とインデックスサイズ肥大化を予防できます。 定期実行タスクにて[Solrサービス再起動]をスケジュールできます。

インデックスの初期化と再構築を実施する

SolrCloud環境では、インデックスデータはコレクション別のフォルダに分かれて保存されます。更新頻度の高いドキュメントルートフォルダに対応するコレクションは早く肥大化する傾向があります。

肥大化したインデックスサイズを早急に縮小するにはコレクションを初期化してインデックス再構築するのが有効です。

インデックス肥大化が著しいドキュメントルートについては数年に一度、コレクションの初期化を実行することが有効かもしれません。(ディスク容量に余裕があれば実行は不要です)