Log4j ist hängen meine Anwendung was mache ich falsch?

Zuerst etwas über den hintergrund der Anwendung. Ich habe eine Anwendung die Verarbeitung viele unabhängige Aufgaben parallel über einen thread-pool. Der thread-pool ist jetzt Aufhängen.

Folgende ist ein Ausschnitt aus meinem thread-dumps, alle meine Threads im pool-2 BLOCKIERT werden, die von "pool-2-thread-78". Es scheint geschlossen zu sein versuchen zu schreiben, die Konsole, die ich äußerst seltsam. Kann jemand alle vergossen Licht auf die situation für mich?

BEARBEITEN:
Plattform details
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)

Ubuntu-Linux-server, dual-quad-core-Maschine.

Scheint es zu sperren, wenn das schreiben der printstream, ich habe als nur das entfernen der console appender aber ich würde lieber wissen, warum es blockiert ist und entfernen Sie es, auf diesem wissen basieren. In der Vergangenheit war das entfernen und sehen, ob es funktioniert hat komm zurück zu beißen mich 🙂

entsprechenden Abschnitt aus meiner log4j

log4j.rootLogger=DEBUG, STDOUT
log4j.logger.com.bla=INFO, LOG
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.LOG=org.apache.log4j.FileAppender

Thread-dump extrahieren

"pool-2-thread-79" Id=149 BLOCKIERT
org.apache.log4j.spi.RootLogger@6c3ba437
im Besitz von "pool-2-thread-78" Id=148 an
org.apache.log4j.Kategorie.callAppenders(Kategorie.java:201)
bei
org.apache.log4j.Kategorie.forcedLog(Kategorie.java:388)
bei
org.apache.log4j.Kategorie.Fehler(Kategorie.java:302)
bei
com.bla bla bla.MessageProcessTask.run(MessageProcessTask.java:103)
bei
java.util.gleichzeitige.Vollzieher$RunnableAdapter.call(Vollzieher.java:441)
bei
java.util.gleichzeitige.FutureTask$Sync.innerRun(FutureTask/java:268)
bei
java.util.gleichzeitige.FutureTask.run(FutureTask/java:54)
bei
java.util.gleichzeitige.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
bei
java.util.gleichzeitige.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
bei
java.lang.Thread.run(Thread.java:619)

"pool-2-thread-78" Id=148 THREAD auf
java.io.FileOutputStream.writeBytes(Native
Methode) an
java.io.FileOutputStream.schreiben(FileOutputStream.java:260)
bei
java.io.BufferedOutputStream.schreiben(BufferedOutputStream.java:105)
- gesperrt <0x6f314ba4> (eine java.io.BufferedOutputStream)
java.io.PrintStream.schreiben(PrintStream.java:430)
- gesperrt <0xd5d3504> (eine java.io.PrintStream)
org.apache.log4j.ConsoleAppender$SystemOutStream.schreiben(ConsoleAppender.java:173)
bei
Sonne.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
bei
Sonne.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
bei
Sonne.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)
bei
Sonne.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)
- gesperrt <0x6243a076> (eine java.io.OutputStreamWriter)
java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)
bei
org.apache.log4j.Helferinnen und Helfer.QuietWriter.flush(QuietWriter.java:57)
bei
org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:315)
bei
org.apache.log4j.WriterAppender.append(WriterAppender.java:159)
bei
org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
- gesperrt <0x45dbd560> (eine org.apache.log4j.ConsoleAppender)
org.apache.log4j.Helferinnen und Helfer.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
bei
org.apache.log4j.Kategorie.callAppenders(Kategorie.java:203)
- gesperrt <0x6c3ba437> (eine org.apache.log4j.spi.RootLogger)
org.apache.log4j.Kategorie.forcedLog(Kategorie.java:388)
bei
org.apache.log4j.Kategorie.Fehler(Kategorie.java:302)
bei
com.bla bla bla.MessageProcessTask.run(MessageProcessTask.java:103)
bei
java.util.gleichzeitige.Vollzieher$RunnableAdapter.call(Vollzieher.java:441)
bei
java.util.gleichzeitige.FutureTask$Sync.innerRun(FutureTask/java:268)
bei
java.util.gleichzeitige.FutureTask.run(FutureTask/java:54)
bei
java.util.gleichzeitige.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
bei
java.util.gleichzeitige.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
bei
java.lang.Thread.run(Thread.java:619)

InformationsquelleAutor der Frage Paul Whelan | 2009-03-11

Schreibe einen Kommentar