logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Remko Popma (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (LOG4J2-1221) Dead lock observed in BlockingWaitStrategy in Log 4J
Date Sat, 12 Dec 2015 12:29:46 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-1221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15054269#comment-15054269
] 

Remko Popma edited comment on LOG4J2-1221 at 12/12/15 12:28 PM:
----------------------------------------------------------------

When the buffer is 100% full the only options I can think of is to either drop the event or
to log the event synchronously (send it to the appender directly).

I noticed that you configured the ring buffer size to 128. This is extremely small, and you
will find the ring buffer filling up rapidly when the appender cannot keep up with bursts
of log events. So your buffer will nearly always be full. In that case, dropping events is
probably not what you want here, but logging synchronously to deal with a full buffer kind
of defeats the purpose of using Async Loggers... I would recommend a much larger queue size.


was (Author: remkop@yahoo.com):
When the buffer is 100% full the only options I can think of is to either drop the event or
to log the event synchronously (send it to the appender directly).

I noticed that you configured the ring buffer to 128. This is extremely small, and you will
find the ring buffer filling up rapidly when the appender cannot keep up with bursts of log
events. Dropping events is probably not what you want here, but logging synchronously kind
of defeats the purpose of using Async Loggers... I would recommend a much larger queue size.

> Dead lock observed in BlockingWaitStrategy in Log 4J
> ----------------------------------------------------
>
>                 Key: LOG4J2-1221
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1221
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2
>         Environment: log4J Version : 2.2 Disruptor Version : 3.3.2
> Ring Buffer Size : 128
> OS Version :
> cat /etc/release
> Oracle Solaris 11.2 X86
> Java Version
> java version "1.7.0_45"
> Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
> Java HotSpot(TM) Server VM (build 24.45-b08, mixed mode)
>            Reporter: Sampath Kumar
>            Priority: Critical
>              Labels: patch
>
> We have seen this behavior in during high load. Where Logging Got Stropped and Application
Went to not responsive state.
> log4J Version : 2.2 Disruptor Version : 3.3.2
> Ring Buffer Size : 128
> Producer(Multiples Threads) and Consumer Threads(Single Thread As per Log 4J Configuration)
Started Waiting on each other.
> Here is the one of the Trace from Thread Dump:
> Producer : 
> "[ACTIVE] ExecuteThread: '7' for queue: 'weblogic.kernel.Default (self-tuning)'" TIMED_WAITING
> sun.misc.Unsafe.park(Native Method)
> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:349)
> com.lmax.disruptor.MultiProducerSequencer.next(MultiProducerSequencer.java:136)
> com.lmax.disruptor.MultiProducerSequencer.next(MultiProducerSequencer.java:105)
> com.lmax.disruptor.RingBuffer.publishEvent(RingBuffer.java:444)
> com.lmax.disruptor.dsl.Disruptor.publishEvent(Disruptor.java:256)
> org.apache.logging.log4j.core.async.AsyncLogger.logMessage(AsyncLogger.java:285)
> org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:722)
> org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:693)
> org.apache.logging.log4j.jcl.Log4jLog.debug(Log4jLog.java:81)
> Consumer Thread :
> "AsyncLogger-1" waiting for lock java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@5d972983
WAITING
> sun.misc.Unsafe.park(Native Method)
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
> com.lmax.disruptor.BlockingWaitStrategy.waitFor(BlockingWaitStrategy.java:45)
> com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:55)
> com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:123)
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> java.lang.Thread.run(Thread.java:744)
> Is this is known issue which got already fixed in recent build ?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message