見出し画像

全文検索サーバFessを導入後1年経ちました


1年経った現在

昨年8月くらいに記事にして本番運用が9月から。
ちょうど1年ほど経過したところですが、なんとか無事に運用できています。ユーザーの満足度も高いようです。
使ってみた感想や運用面の変化について少しだけ書き起こしておきます。

思惑と実際

物理、仮想の環境については過去記事に詳しくあります。

全文検索システムの本番環境について考える|Umino Shahi (note.com)

ネットワーク環境

当時はネットワークのパフォーマンス向上を目的に、クローリングに使用するLANポートを外部ではなく、プライベートへ設定。
つまり物理サーバ内で完結した仮想的なLANでの接続です。
うちの社内LANが1GB接続
仮想スイッチ(プライベート)が10GB接続
ということで、同じ物理サーバ上の仮想サーバ同士の特権である高速接続を実現しよう & 外部スイッチの負担を軽減しよう。という思惑でした。

結論を言おう。10GBの仮想プライベートより、1GBの外部スイッチのほうがクロールが早く完了することが判明。
Why??

仮説1
通信周りをネットワークカードにまかせたほうがCPUの負担軽減だったり、トータルのパフォーマンスが良いのかもしれない。

仮説2
クロール先のフォルダ設定に使用するパスは、物理ネットワークはFQDN(サーバ名)。仮想プライベートはIPアドレスで指定しています。
このIPアドレスは仮想サーバ同士でしか見えないアドレスのため、ユーザから参照できるように、IPをサーバ名に置換する処理が発生します。
この処理の分クロール時の処理が多く、時間がかかっている。

どちらにしても、普通にFQDN指定のほうが、書きやすいし、パフォーマンスもいいし、サーバ負荷も軽いかもしれないとなれば、外部スイッチ経由を選ばない理由はないので、この点は昨年の記事の構想から変更となりました。

メモリ割り当ての増加

以前の記事にしていますが、こちらも構想初期から微妙に増加

全文検索FESSのチューニング|Umino Shahi (note.com)

この当時Opensearchへの割当を6Gbまで増やしていましたが、今は8Gbまで増やしていたはず。
Fessは上記リンク先の設定のまま
トータル200万ファイルくらいになりましたが、目立ったトラブルもなく動いてくれています。

アクセス権の誤算

クロールのスケジュールを曜日別に平準化。
火曜日から日曜日まで、休日は日中もクロールできるように。
とかクローラを分けていると、権限の設定は簡素にいきたいじゃないですか。(とか書いている時点で駄目な予感満載)

ダメ元で、部門内のユーザと、部門外のユーザを同じクローラで、同じ権限を付与。
部門外のユーザは限定されたフォルダへのアクセス権しか持っていないので、検索対象にファイルが表示されても実際のファイルを開けなければいいかなとか思っていたわけです。

一応、確認してもらおうと、部門外ユーザにテストをお願い。
Que 1.開放フォルダ以外も表示される?
Ans 1. Yes。ファイルもクリックしたらダウンロードされるよ。

・・・ファイルも、、ダウンロードできる????
Fessはファイル名をクリックするとフォルダ内のファイル本体を直接開くことはできず、ブラウザからファイルをダウンロードしてしまう仕様。
このとき、フォルダへの直接のアクセス権がないユーザに対しても、Fessが仲介してファイルをダウンロードさせてしまうようですね。

とうことで、ファイルサイズだけでスケジュールを組もうかとしていましたが、適切な権限別にクローラを再設定するはめになりました。
何事も手抜きはいけません。

その他のトラブル、TIPSなど

ホストマシン再起動後の挙動不審

これも以前記事にしましたが、ホストマシンを再起動。その際仮想マシンは動作状態のまま保存。という設定にしていると、再起動後の仮想マシンのメモリが自動割り当てにもかかわらず、スケーラブルに動いていないような、応答の低下が発生。
これはしょうがないので、仮想サーバも再起動することで対策。

再起動後にOpensearchが起動できない

これは原因が2パターンあって、1つはメモリが足らんと怒られる場合。
これはしょうがないので、上述のとおり、8GBまで増やすことで対策済み。

もう1つ、ログが上書きできないとかで、起動を拒まれることがいつからか発生するように。
タスクマネージャーで確認するとJavaが2つ稼働したまま。
仮想マシンを再起動したはずだけど、なんでだろ。
OpensearchとFessのJavaVMが動いたままみたいな挙動のようです。
とりあえず、2つのJavaを停止すると動くようになりました。

あ、もう1つあった。
Java自体がないと言われるパターン。
なぜかJavaの実行ファイルがWindowsのDefenderに消されてしまうことが2回ほど。
AdoptiumのJavaを使っていますが、不審者扱いされてしまうんですね。
これはJavaを再インストールすることで解決しますが、疑わしい挙動でもしているのでしょうか。

総括

オープンソースでこれだけ使えれば十分じゃないでしょうか。
以前使っていたWindows Search Server Expressよりもヒット数は多いようですし、検索する側の一工夫でうまいこと絞り込みもできることから、十分な機能、性能を発揮してくれていると思います。
最近はAIの台頭が著しいので、うまいことあいまい検索とか意味からの関連ファイルを探せるような進化をしてくれると嬉しいですね。

業務上どうしてもファイルを探す時間というのは多く発生するので、有償でも抜群に性能の良いものがあれば、導入を検討する価値はありそうです。

この記事が気に入ったらサポートをしてみませんか?