Nutchをインストールするとボクの環境では $CATALINA_HOME/bin/shutdown.sh を実行しても Tomcat が停止されないという問題が出ています。
$CATALINA_HOME/catalina.out に停止メッセージがちゃんと表示されているにもかかわらずです。(正確に言うと「停止します」なので、これから停止処理をするという意味なのでしょうが... )
情報: Coyote HTTP/1.1を http-8080 で停止します
スレッドダンプをとってみたところ Nutch のあるスレッドが 非 daemon スレッドとしてとして実装されていることがわかりました。ここがあやしそうです。Tomcat は停止時に daemon スレッドは自動的に停止させるのですが、非 daemon スレッドの場合にはその停止を待ちます。
なので下の例の"Thread-4"が停止するのを待っていることが考えられます。
$ kill -3 Tomcat のプロセス番号 以下は、$CATALINA_HOME/catalina.out に出力されたログ 2009-06-08 18:50:50 Full thread dump Java HotSpot(TM) Server VM (14.0-b16 mixed mode): "DestroyJavaVM" prio=10 tid=0x8f84e400 nid=0x35cf waiting on condition [0x000000 00] java.lang.Thread.State: RUNNABLE "TimeLimitedCollector timer thread" daemon prio=10 tid=0x8f86c400 nid=0x361b wai ting on condition [0x8fb9b000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.apache.lucene.search.TimeLimitingCollector$TimerThread.run(TimeLi mitingCollector.java:78) "TP-Processor4" daemon prio=10 tid=0x8f444400 nid=0x3604 in Object.wait() [0x8e2 df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0xb39db6e8> (a org.apache.jk.common.ChannelSocket) at java.lang.Object.wait(Object.java:485) at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306) - locked <0xb39db6e8> (a org.apache.jk.common.ChannelSocket) at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.ja va:666) at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket .java:876) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP ool.java:689) at java.lang.Thread.run(Thread.java:619) "http-8080-Processor24" daemon prio=10 tid=0x8f8e0000 nid=0x35fe waiting on cond ition [0x8e4bf000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol lowerWorkerThread.java:62) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP ool.java:689) at java.lang.Thread.run(Thread.java:619) "Thread-4" prio=10 tid=0x085ae400 nid=0x35e5 waiting on condition [0x8f3ff000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.apache.nutch.searcher.FetchedSegments$SegmentUpdater.run(FetchedS egments.java:104) "Low Memory Detector" daemon prio=10 tid=0x9002a000 nid=0x35d8 runnable [0x00000 000] java.lang.Thread.State: RUNNABLE "CompilerThread1" daemon prio=10 tid=0x90027c00 nid=0x35d7 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x90026400 nid=0x35d6 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x90024c00 nid=0x35d5 waiting on conditio n [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=10 tid=0x90000800 nid=0x35d4 in Object.wait() [0x901d700 0] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x94886a38> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118) - locked <0x94886a38> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x080d9400 nid=0x35d3 in Object.wait() [0 x90227000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x94893f08> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116) - locked <0x94893f08> (a java.lang.ref.Reference$Lock) "VM Thread" prio=10 tid=0x080d5400 nid=0x35d2 runnable "GC task thread#0 (ParallelGC)" prio=10 tid=0x0805fc00 nid=0x35d0 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x08061000 nid=0x35d1 runnable "VM Periodic Task Thread" prio=10 tid=0x9002c000 nid=0x35d9 waiting on condition JNI global references: 623 Heap PSYoungGen total 50944K, used 7953K [0xb0960000, 0xb4190000, 0xb4190000) eden space 49024K, 12% used [0xb0960000,0xb0f48128,0xb3940000) from space 1920K, 99% used [0xb3940000,0xb3b1c588,0xb3b20000) to space 2432K, 0% used [0xb3f30000,0xb3f30000,0xb4190000) PSOldGen total 28736K, used 3447K [0x94790000, 0x963a0000, 0xb0960000) object space 28736K, 11% used [0x94790000,0x94aedd88,0x963a0000) PSPermGen total 16384K, used 16087K [0x90790000, 0x91790000, 0x94790000) object space 16384K, 98% used [0x90790000,0x91745d68,0x91790000)
原因らしきものはわかったのですが、対応方法がわかりません。ここまで読んでくれた方すいません...。
しばらくは $CATALINA_HOME/bin/shutdown.sh -froce で停止させる状態が続きそうです。
Nutch インストール方法については以下をみてください。
[Nutch][インストール] Apache プロジェクトのクローラ Nutch を軽く試してみた
ではでは
合コンで出すと女子に意外とウケがイイ。オンライン・ショッピングでも安心のカード。アメリカン・エキスプレス・ゴールド・カード