0
我的Tomcat網站偶爾掛起。當我轉儲堆棧跟蹤時,我看到多達200個線程,像這樣:四核CPU上的Java(log4j)死鎖。爲什麼300%的CPU?
"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狀態下看到三個線程,但我找不到任何線程。相反,我會在BLOCKED狀態下爲每個日誌消息找到一個。
- 爲什麼300%的CPU?這是一個JVM的東西,用於核心數量 - 1線程?
- 什麼會導致死鎖?我正在使用最新的log4j.jar。這個問題只發生在Tomcat 6.0.35/JAVA 1.6.0_31-B04,但不是tomcat的6.0.18/JAVA 1.6.0_17-B04
感謝
我可能是盲目的,錯過了三個RUNNABLE線程。有一個log4j Appender循環。我仍然想知道爲什麼每次只有三個線程... – ropo 2013-03-28 14:34:45