log4j SocketAppender hang in socketWrite()
Issue
We're using a log4j SocketAppender to log events. Under load, the SocketAppender gets hung in a native socketWrite0() call, which causes all other request threads that need to log anything getting hung as well. We tried wrapping the SocketAppender in an AsyncAppender but get the same result.
"pool-2-thread-1" daemon prio=10 tid=0x00007fac20005800 nid=0x7666 runnable [0x00007fac60f5c000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1876)
at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1785)
at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1285)
at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1230)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1426)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at org.apache.log4j.net.SocketAppender.append(SocketAppender.java:268)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
- locked <0x00000006eb09a288> (a org.apache.log4j.net.SocketAppender)
at org.jboss.as.logging.logmanager.Log4jAppenderHandler.doPublish(Log4jAppenderHandler.java:129)
at org.jboss.logmanager.ExtHandler.publish(ExtHandler.java:76)
at org.jboss.logmanager.handlers.AsyncHandler$AsyncTask.run(AsyncHandler.java:199)
at java.lang.Thread.run(Thread.java:745)
Environment
- JBoss Enterprise Application Platform (EAP) 6.x
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
