5日の00:00にファイルサーバ全体のクロールをリトライしたら、
今朝の03:38にまたjava.lang.OutOfMemoryErrorで停止してしまった。
fess-crawler.logを見たところ、前回と似たような場所で、
大体150万ファイルをクロールした辺りで停止している。
Thumbnail Purgerを止めて処理がかぶらないようにしたのに
前回と同じ場所でメモリ不足になるということは、
一度に処理するファイル数に比例してメモリが必要なのかもしれない。
状況を確かめてみたいけれど、何か方法はあるのかな。。
調べたところ、jpsでjavaのプロセスidを確認し、
jstatでidごとのヒープメモリの使用状況を見られるらしい。
# jps
3441492 Crawler
3661174 Jps
3423683 FessBoot
1119 Elasticsearch
# jstat -gc 3441492
表示されたS0U + S1U + EU + OUがヒープ使用量(KB)だそうだ。
OUがどんどん増えていくと、メモリのコピー操作をするための空きがなくて
エラーになるらしい。
もう一度クローラを実行して、時々この値を見てみよう。
いや、待てよ。
これだと50時間待たされた挙句、確実にメモリ不足で止まるじゃないか。
OUがどんどん増えていく~、のは見えるけれど、問題は解決しない。
デフォルトクローラを分割できると良いのだけど、できるのかな?
探したらあった。
https://fess.codelibs.org/ja/14.2/admin/scheduler-guide.html
120万ファイルが対象になるように、新しいクローラジョブを作った。
fileConfigIdsには、ファイルシステムクローラのID欄の文字列を入れ、
次のようにしてみた。
うまく動くかな?
今日は七夕だ。今年も星は見えなかった。