Tomcat Web サイトが散発的にハングします。スタック トレースをダンプすると、次のような最大 200 のスレッドが表示されます。
"TP-Processor200" daemon prio=10 tid=0x00007fddf062a800 nid=0x4bce waiting for monitor entry [0x00007fdd5020b000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.log4j.Category.callAppenders(Category.java:204)
- waiting to lock <0x00000007808d3a88> (a org.apache.log4j.spi.RootLogger)
at org.apache.log4j.Category.forcedLog(Category.java:391)
Java プロセスは 300% の CPU を消費しています。RUNNING 状態のスレッドが 3 つあることを期待していましたが、何も見つかりませんでした。代わりに、BLOCKED 状態のログ メッセージごとに 1 つ見つけます。
- なぜ 300% の CPU なのですか? これはコア数 - 1 スレッドまで使用する JVM のものですか?
- デッドロックの原因は何ですか? 最新の log4j.jar を使用しています。この問題は、Tomcat 6.0.35/Java 1.6.0_31-b04 でのみ発生しますが、Tomcat 6.0.18/Java 1.6.0_17-b04 では発生しません。
ありがとう