- - PR -
TOMCATをshutdownしてもコンソールが応答しない。
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-07-22 18:09
こんにちは、ういちと申します。
現在、tomcat4.1.x、JDK1.4.2_02、strutsを使用して開発を行っております。 tomcatのstartup.batを実行しシステムを稼動しているのですが、 稀にshutdown.batを実行しtomcatを終了しても、コンソールが閉じない現象がおきます。 仕方が無いので、Xボタンを押して終了しようとすると 「応答しません」等のダイアログが現れ強制終了となってしまいます。 今、どのタイミングで応答しなくなるかテストしているのですが コンソールに出力するログのレベルを下げてたくさん出力するようにすると起きるような気がしてます。(ちなみにログ出力にはloggingとLog4Jを組み合わせております) 通常は、1/2ほどの確立で起こるのですが。 どういった理由が考えられるでしょうか? ご教授ください。宜しくお願いします。 | ||||
|
投稿日時: 2004-07-22 18:17
関係あるかわかりませんが、以前ログレベルを下げて
起動すると、Jakarta Commons Digester が 凄い量のログを吐いてしまい、処理に非常に時間がかかった記憶があります。 ちなみにプラットフォームは Linux でした。 | ||||
|
投稿日時: 2004-07-22 19:08
返答ありがとうございます。
ただ今回、Jakarta Commons Digester は使用していません。 単純にlog4j.propertiesファイルを作成し、 それを元にコンソールやファイルに書き込むようしております。 ちなみにプラットフォームはwin2000です。 | ||||
|
投稿日時: 2004-07-23 18:21
あ、わかりづらかったですね。 Digester は Tomcat や Struts が内部で使ってますもので 別にアプリケーション側で使っていなくても関係ないのです。 | ||||
|
投稿日時: 2004-07-23 18:28
こんにちは。
私もXボタンを押すと反応がなくなり、強制終了したことが何度もあります。 Ctrl+Cを使うと、うまくいきますよ。 | ||||
|
投稿日時: 2004-07-26 17:54
log4jのバージョンはいくつですか?
1.2.3以下なら、 http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9750 このバグによる影響の可能性があります。確認してみてください。 | ||||
|
投稿日時: 2004-07-26 19:40
ありがとうございます。調べてみたところverは1.2.8でした。 log4j.propertiesファイルのログレベルに log4jでは存在しない「TRACE」と設定していた箇所があったのでそちらを修正たんですが。それ以来正常になったような気がします。 (半年ほど前からTRACEとしていてぜんぜん気づかないくらい正常に動いていたので、多分見当違いでしょうが。) #------------------------------ 全般的な設定 ------------------------------- log4j.rootCategory=,CONSOLE,FILE log4j.threshold=INFO(←ここがTRACEだった) #------------------------------- コンソール -------------------------------- log4j.appender.CONSOLE.threshold=INFO(←ここがTRACEだった) log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} [%-5p] (%F:%L) %m%n #------------------------------ ファイル ----------------------------------- log4j.appender.FILE.threshold=WARN log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.File=D:/tmp/err.log log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} [%-5p] (%F:%L) %m%n | ||||
|
投稿日時: 2004-07-26 20:44
> 調べてみたところverは1.2.8でした。
では関係なかったですね。ちなみに、私は以前log4j-1.2.3をつかってて、 Tomcatが落ちない現象にはまったときに、このバグへ辿り着きました。 参考までに、そのとき解析した手順を書いておきます。 1.止まらない現象を再現させる (startup runで起動すると良い) 2.Tomcatを起動したコンソールウインドウをアクティブにして、Ctrl+Breakを押し、 スレッドダンプを取る(コンソールウインドウのバッファサイズは大きめにして おく) 3.スレッドダンプをテキストエディタなどにコピー 4.リストされたスレッドのうち、daemonとマークされていないスレッドを残し、daemon とマークされたスレッドは消す (なぜなら、daemonがいようがいまいがJVMの終了には関係ないので) 5.残ったスレッドの中から、怪しげなスレッドを探す(正常に終了する場合にも 終了寸前のスレッドダンプをとって、比較する) 6.そのスレッドが、何のライブラリ(のどんな機能)から起動されたスレッドかを スタックから判断し、そのライブラリのBugzillaやMLなどを検索する こんな感じです。Unixの場合は、Ctrl+Breakではなく、Ctrl+\(Tomcatのプロセスがフォアグランドの場合だけ)か、kill -3 PIDでスレッドダンプを取ります。 | ||||
