我們的Java(Web)應用程序在JBoss 6x中運行。 當緩慢報道:記錄器上阻塞的Java線程
- 線程堆棧轉儲被帶到
- 內存檢查(詳情如下) - 內存使用被認爲是非常高,幾乎觸及最大允許堆大小,但沒有內存不足。
線程棧轉儲顯示阻塞與這些樣的錯誤記錄最螺紋:
waiting for monitor entry [0x000000004b6be000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.jboss.logmanager.handlers.WriterHandler.doPublish(WriterHandler.java:59)
- waiting to lock <0x00002aaac9a2de68> (a java.lang.Object)
at org.jboss.logmanager.ExtHandler.publish(ExtHandler.java:64)
而且這樣的:
java.lang.Thread.State: BLOCKED (on object monitor)
at java.io.PrintStream.println(PrintStream.java:756)
- waiting to lock <0x00002aaac9817a08> (a com.whatever.SomeClass)
at com.something.ThatClass.thatMethod(ThatClass.java:169)
的com.whatever.SomeClass使用org.apache .log4j.Logger
我們使用Log4j進行日誌記錄。
看來線程在某些日誌記錄操作中都被阻塞。 過去也發生過這個問題,並且似乎是隨機的,並且會減慢/停止應用程序。
任何想法?
可能在.log文件的任何文件操作並行 – TheWhiteRabbit
正在發生也注意到,最近對RollingFileAppender進行中的log4j.xml,MaxBackupIndex大小已設置爲1000(MAXFILESIZE爲5MB)。 MaxBackupIndex的這麼高的值是否會成爲這個問題的原因? - – Jasper