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

Remko Popma commented on LOG4J2-1318:
-------------------------------------

I see now: each call to LoggerContext.getLogger() creates a String key to look 
up the logger. I guess our expectation was that Logger instances would be 
cached in fields so this lookup would not happen very often, while your usage 
is to look up the logger frequently.

We can change the implementation to use a nested map, so composite keys are no 
longer needed.
Something like {{Map<Class<? extends MessageFactory>, Map<String, Logger>}}. 
Getting things out and putting things in can be a bit fiddly, so perhaps we 
should wrap that logic in a custom {{LoggerCache}} container class, so it can 
be reused by the various LoggerContext implementations.

> LoggerContext#getLogger causes heavy GC overhead
> ------------------------------------------------
>
>                 Key: LOG4J2-1318
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1318
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.5
>            Reporter: Rodrigo Merino
>              Labels: performance
>
> With the changes from LOG4J2-1180, when running performance testing 
> scenarios, we are experiencing some throughput degradations due to an 
> increase in the GC stall time.
> With the changes from LOG4J2-1180, the GC stall went from ~6% to ~11%, having 
> an impact on the application of a reduction of ~32% of the operations 
> throughput. The memory allocation rate both before and after the change is 
> 4GB/s and 12GB/s respectively.
> In both cases, the relevant jvm configuration params were:
> {code}
> -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCDateStamps 
> -XX:+PrintTenuringDistribution -XX:ErrorFile=%MHOME%/logs/err.log 
> -Xloggc:%HOME%/logs/gc.log -XX:+HeapDumpOnOutOfMemoryError 
> -XX:+AlwaysPreTouch -Xms2048m -XX:PermSize=256m -XX:MaxPermSize=256m 
> -XX:+UseParNewGC -XX:NewSize=1024m -XX:+UseNUMA
> {code}



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

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

Reply via email to