クローラープロセスの停止

(from osdn.net/users/cruxy)
お世話になります。

たまにクローラープロセスが停止しない現象が起きていまして、

クローラープロセスの停止をShellで作成しようと思っております。

(Fess管理サイト->システム->システム設定->クローラープロセス 停止)

単純にKillコマンドでクローラープロセスを強制終了してもいいでしょうか?

クローラープロセスの停止に関する情報がありましたら、アドバイスをお願い致します。

以上、宜しくお願い致します。

(from osdn.net/users/shinsuke)

単純にKillコマンドでクローラープロセスを強制終了してもいいでしょうか?

(Fess管理サイト->システム->システム設定->クローラープロセス 停止)

とほぼ同じ感じなので、killでも良いと思います。

どこで停止できていないのか知りたいのですが、

可能でしたら、Java の jps コマンドでクローラーの

プロセスに対して、jstackした結果をいただけると

助かります。

よろしくお願いいたします。

(from osdn.net/users/cruxy)

(Fess管理サイト->システム->システム設定->クローラープロセス 停止)

とほぼ同じ感じなので、killでも良いと思います。

了解致しました。ありがとうございます。

因みにクローラープロセスが2013年05月14日01時10分に実行開始され、現在まで終了されない状態です。

FESSのVersionは7.0.2です。

「webapps/fess/WEB-INF/logs/fess_crawler.out」から

「index update」は完了しましたが、「index optimize」が始まってないことを確認しています。

OutOfMemory Errorは出ていません。

jstackの結果は下記のようです。長いですが、宜しくお願い致します。


2013-08-19 17:26:53

Full thread dump OpenJDK 64-Bit Server VM (20.0-b12 mixed mode):

“Attach Listener” daemon prio=10 tid=0x00007fece4001000 nid=0x64f9 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“Robot-20130514011023-21-5” prio=10 tid=0x00007fec8c010000 nid=0x6f53 runnable [0x00007fed04997000]

java.lang.Thread.State: RUNNABLE

at java.util.HashMap.transfer(HashMap.java:501)

at java.util.HashMap.resize(HashMap.java:480)

at java.util.HashMap.addEntry(HashMap.java:772)

at java.util.HashMap.put(HashMap.java:402)

at org.apache.pdfbox.util.TextNormalize.populateDiacHash(TextNormalize.java:98)

at org.apache.pdfbox.util.TextNormalize.<init>(TextNormalize.java:41)

at org.apache.pdfbox.util.PDFTextStripper.<init>(PDFTextStripper.java:226)

at org.seasar.robot.extractor.impl.PdfExtractor.getText(PdfExtractor.java:94)

at jp.sf.fess.transformer.AbstractFessFileTransformer.transform(AbstractFessFileTransformer.java:104)

at org.seasar.robot.processor.impl.DefaultResponseProcessor.process(DefaultResponseProcessor.java:72)

at org.seasar.robot.S2RobotThread.processResponse(S2RobotThread.java:346)

at org.seasar.robot.S2RobotThread.run(S2RobotThread.java:182)

at java.lang.Thread.run(Thread.java:679)

“Robot-20130514011023-21-4” prio=10 tid=0x00007fec8c00e800 nid=0x6f52 waiting on condition [0x00007fed04a98000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at org.seasar.robot.interval.impl.DefaultIntervalController.delayAtNoUrlInQueue(DefaultIntervalController.java:89)

at org.seasar.robot.interval.impl.AbstractIntervalController.delay(AbstractIntervalController.java:44)

at org.seasar.robot.S2RobotThread.run(S2RobotThread.java:263)

at java.lang.Thread.run(Thread.java:679)

“Robot-20130514011023-21-3” prio=10 tid=0x00007fec8c00d800 nid=0x6f51 waiting on condition [0x00007fed04b99000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at org.seasar.robot.interval.impl.DefaultIntervalController.delayForWaitingNewUrl(DefaultIntervalController.java:123)

at jp.sf.fess.interval.FessIntervalController.delayForWaitingNewUrl(FessIntervalController.java:72)

at org.seasar.robot.interval.impl.AbstractIntervalController.delay(AbstractIntervalController.java:47)

at org.seasar.robot.S2RobotThread.run(S2RobotThread.java:272)

at java.lang.Thread.run(Thread.java:679)

“Robot-20130514011023-21-2” prio=10 tid=0x00007fec8c00d000 nid=0x6f50 waiting on condition [0x00007fed04c9a000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at org.seasar.robot.interval.impl.DefaultIntervalController.delayForWaitingNewUrl(DefaultIntervalController.java:123)

at jp.sf.fess.interval.FessIntervalController.delayForWaitingNewUrl(FessIntervalController.java:72)

at org.seasar.robot.interval.impl.AbstractIntervalController.delay(AbstractIntervalController.java:47)

at org.seasar.robot.S2RobotThread.run(S2RobotThread.java:272)

at java.lang.Thread.run(Thread.java:679)

“Robot-20130514011023-21-1” prio=10 tid=0x00007fec8c005800 nid=0x6f4f waiting on condition [0x00007fed04d9b000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at org.seasar.robot.interval.impl.DefaultIntervalController.delayForWaitingNewUrl(DefaultIntervalController.java:123)

at jp.sf.fess.interval.FessIntervalController.delayForWaitingNewUrl(FessIntervalController.java:72)

at org.seasar.robot.interval.impl.AbstractIntervalController.delay(AbstractIntervalController.java:47)

at org.seasar.robot.S2RobotThread.run(S2RobotThread.java:272)

at java.lang.Thread.run(Thread.java:679)

“Robot-20130514011023-21” prio=10 tid=0x00007fec9400d000 nid=0x6f4e in Object.wait() [0x00007fed056a4000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000000dd3ff7a0> (a java.lang.Thread)

at java.lang.Thread.join(Thread.java:1203)

- locked <0x00000000dd3ff7a0> (a java.lang.Thread)

at java.lang.Thread.join(Thread.java:1256)

at org.seasar.robot.S2Robot.run(S2Robot.java:229)

at java.lang.Thread.run(Thread.java:679)

“MultiThreadedHttpConnectionManager cleanup” daemon prio=10 tid=0x00007fec8c011800 nid=0x6f44 in Object.wait() [0x00007fed053a1000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000000dc6282a0> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133)

- locked <0x00000000dc6282a0> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149)

at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)

“Web Crawling Process” prio=10 tid=0x00007fed10793800 nid=0x6f3f in Object.wait() [0x00007fed058a6000]

java.lang.Thread.State: TIMED_WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000000dd3ff810> (a java.lang.Thread)

at java.lang.Thread.join(Thread.java:1211)

- locked <0x00000000dd3ff810> (a java.lang.Thread)

at org.seasar.robot.S2Robot.awaitTermination(S2Robot.java:117)

at jp.sf.fess.helper.WebFsIndexHelper.crawl(WebFsIndexHelper.java:510)

at jp.sf.fess.helper.WebFsIndexHelper.crawl(WebFsIndexHelper.java:134)

at jp.sf.fess.exec.Crawler$1.run(Crawler.java:359)

at java.lang.Thread.run(Thread.java:679)

“Seasar2-TimeoutManager” daemon prio=10 tid=0x00007fed106d2000 nid=0x6f3e waiting on condition [0x00007fed05bbc000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at org.seasar.extension.timer.TimeoutManager.run(TimeoutManager.java:153)

at java.lang.Thread.run(Thread.java:679)

“Low Memory Detector” daemon prio=10 tid=0x00007fed10285000 nid=0x6f3b runnable [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“C2 CompilerThread1” daemon prio=10 tid=0x00007fed10282800 nid=0x6f3a waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“C2 CompilerThread0” daemon prio=10 tid=0x00007fed10280000 nid=0x6f39 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“Signal Dispatcher” daemon prio=10 tid=0x00007fed1027e000 nid=0x6f38 runnable [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“Surrogate Locker Thread (Concurrent GC)” daemon prio=10 tid=0x00007fed1027c800 nid=0x6f37 waiting on condition [0x0000000000000000]

java.lang.Thread.State: RUNNABLE

“Finalizer” daemon prio=10 tid=0x00007fed1025e000 nid=0x6f36 in Object.wait() [0x00007fed0666e000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000000dc021278> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133)

- locked <0x00000000dc021278> (a java.lang.ref.ReferenceQueue$Lock)

at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149)

at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)

“Reference Handler” daemon prio=10 tid=0x00007fed1025c000 nid=0x6f35 in Object.wait() [0x00007fed0676f000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000000dc0226e0> (a java.lang.ref.Reference$Lock)

at java.lang.Object.wait(Object.java:502)

at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)

- locked <0x00000000dc0226e0> (a java.lang.ref.Reference$Lock)

“main” prio=10 tid=0x00007fed10009000 nid=0x6f21 in Object.wait() [0x00007fed14653000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x00000000dd1245d8> (a java.lang.Thread)

at java.lang.Thread.join(Thread.java:1203)

- locked <0x00000000dd1245d8> (a java.lang.Thread)

at java.lang.Thread.join(Thread.java:1256)

at jp.sf.fess.exec.Crawler.joinCrawlerThread(Crawler.java:517)

at jp.sf.fess.exec.Crawler.doCrawl(Crawler.java:384)

at jp.sf.fess.exec.Crawler.main(Crawler.java:244)

“VM Thread” prio=10 tid=0x00007fed10255000 nid=0x6f34 runnable

“Gang worker#0 (Parallel GC Threads)” prio=10 tid=0x00007fed1000f800 nid=0x6f22 runnable

“Gang worker#1 (Parallel GC Threads)” prio=10 tid=0x00007fed10011800 nid=0x6f23 runnable

“Gang worker#2 (Parallel GC Threads)” prio=10 tid=0x00007fed10013000 nid=0x6f24 runnable

“Gang worker#3 (Parallel GC Threads)” prio=10 tid=0x00007fed10015000 nid=0x6f25 runnable

“Gang worker#4 (Parallel GC Threads)” prio=10 tid=0x00007fed10017000 nid=0x6f26 runnable

“Gang worker#5 (Parallel GC Threads)” prio=10 tid=0x00007fed10018800 nid=0x6f27 runnable

“Gang worker#6 (Parallel GC Threads)” prio=10 tid=0x00007fed1001a800 nid=0x6f28 runnable

“Gang worker#7 (Parallel GC Threads)” prio=10 tid=0x00007fed1001c800 nid=0x6f29 runnable

“Gang worker#8 (Parallel GC Threads)” prio=10 tid=0x00007fed1001e000 nid=0x6f2a runnable

“Gang worker#9 (Parallel GC Threads)” prio=10 tid=0x00007fed10020000 nid=0x6f2b runnable

“Gang worker#10 (Parallel GC Threads)” prio=10 tid=0x00007fed10022000 nid=0x6f2c runnable

“Gang worker#11 (Parallel GC Threads)” prio=10 tid=0x00007fed10024000 nid=0x6f2d runnable

“Gang worker#12 (Parallel GC Threads)” prio=10 tid=0x00007fed10025800 nid=0x6f2e runnable

“Concurrent Mark-Sweep GC Thread” prio=10 tid=0x00007fed10196800 nid=0x6f33 runnable

“Gang worker#0 (Parallel CMS Threads)” prio=10 tid=0x00007fed1018e800 nid=0x6f2f runnable

“Gang worker#1 (Parallel CMS Threads)” prio=10 tid=0x00007fed10190800 nid=0x6f30 runnable

“Gang worker#2 (Parallel CMS Threads)” prio=10 tid=0x00007fed10192000 nid=0x6f31 runnable

“Gang worker#3 (Parallel CMS Threads)” prio=10 tid=0x00007fed10194000 nid=0x6f32 runnable

“VM Periodic Task Thread” prio=10 tid=0x00007fed10290000 nid=0x6f3c waiting on condition

JNI global references: 1128

(from osdn.net/users/shinsuke)
貴重な情報をありがとうございます。

毎回、pdfboxでそうなるとなると

https://issues.apache.org/jira/browse/PDFBOX-1622

の問題が怪しい気がします。この場合、次のリリースのpdfboxに差し替えるか

pdfboxをビルドして差し替えるしか、ないような気もします。

でも、もしかしたら、fess.diconとかに

“UTF-8”

と書いておけば回避可能かもしれません。(動作確認はしてませんが…)

(from osdn.net/users/shinsuke)
よく見たら、毎回、TextNormalizeをnewされてコンストラクタでstaticのHashMapをいじるところが問題なので、dicon案はダメでした…。すいません。

やっぱり次の1.8.3以降か、svnから取ってきてビルドしたもので差し替えしかないと思います。

(from osdn.net/users/cruxy)
クローラープロセスが停止しない現象ですが、何カ月に1回ぐらいの頻度で起きていまして、

その度、クローラープロセスの停止さえ自動で出来ればいいかと思っておりまして、

killコマンドを利用してクローラープロセスの停止のShellを作成致しました。

ご対応とアドバイス、誠にありがとうございました。