포럼: 【GitHubに移行しました】機能要求 (Thread #33152)

クローラーで OutOfMemory になった際の挙動について (2012-11-27 11:07 by leihcrev #66458)

菊池です。度々すみません。
# 諸事情でメールの読み書きがしづらいもので、あまり機能面の話題ではないのですが、こちらに失礼します。

Crawler プロセスで OOM が発生し、IndexUpdater スレッドが死んでしまった場合に、クロールが継続しているようです。
「[fess-user 159] Re: ヒープメモリーに関して」を拝見したところ、クロール用スレッドを終了させる想定とのことでしたが、クロールが一巡するまで Crawler プロセスは終了しませんでした。
ログに「IndexUpdater is terminated.」は出ていました。

ちょっと追ってみたのですが、IndexUpdate スレッドで OOM 発生後、systemHelper.forceStop は true になっていました。systemHelper.currentProcess は null なので、destroyProcess() には行きません。
そのとき Web Crawling Process スレッドは WebFsIndexHelper#crawl() の S2Robot.awaitTermination() のループを回っていました。
このループでは systemHelper.forceStop を見ていないので、全ての Robot スレッドが終了するまでループを抜けないようでした。

S2Robot.awaitTermination() のループの中でも systemHelper.forceStop をチェックしてもよいのかと思うのですが、いかがでしょうか。

Reply to #66458×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: クローラーで OutOfMemory になった際の挙動について (2012-11-27 21:27 by shinsuke #66471)

ありがとうございます。
検討します。
Reply to #66458

Reply to #66471×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login