Liao,Kucheng created LOG4J2-2155:
------------------------------------

             Summary: alway full gc on low memory
                 Key: LOG4J2-2155
                 URL: https://issues.apache.org/jira/browse/LOG4J2-2155
             Project: Log4j 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.8.2
         Environment: centos6.8 ,jdk8
            Reporter: Liao,Kucheng
         Attachments: log4j-exception1.png, log4j-exception2.png, 
log4j2-exception3.png, log4j2.xml

   my web  project run on a low memory  jvm , the configurate  :
JAVA_OPTS="
-server 
-Xmx2g 
-Xms400m 
-Xmn200m
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC 
-XX:CMSInitiatingOccupancyFraction=85
-XX:-UseBiasedLocking
-XX:+UseCompressedOops 
-XX:+UseCompressedClassPointers 
-XX:-UseCounterDecay
"
its a webSocket server conaint webSocket and http,  i deploy more than 10 nodes 
on production. 
today ,i find 2 nodes cup is full ,i check it , jvm aways run full gc :

[deployUser@iZbp1bk0r4lgrkltait03cZ bin]$ jstat -gcutil 5749 
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT  
 
  0.00   0.00   4.48  25.75  94.23  87.43     44    0.443 443836 54806.448 
54806.891
[deployUser@iZbp1bk0r4lgrkltait03cZ bin]$ 
i dump jvm and find :
[deployUser@iZbp1bk0r4lgrkltait03cZ ~]$ more jmap 

 num     #instances         #bytes  class name
----------------------------------------------
   1:         25162       21011520  [B
   2:         67545       10520864  [C
   3:        262144        6291456  
org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper
   4:         14916        1970880  [Ljava.lang.Object;
   5:          6895        1867456  [I
   6:         65777        1578648  java.lang.String
   7:         13242        1165296  java.lang.reflect.Method
   8:          9211        1024960  java.lang.Class
   9:         21687         693984  java.util.HashMap$Node
  10:          4886         351792  
io.netty.channel.DefaultChannelHandlerContext


i think Log4jEventWrapper is too many, i look the source code ,the default 
Disruptor size is 256 * 1024.

maven config :
<dependency>
                        <groupId>org.apache.logging.log4j</groupId>
                        <artifactId>log4j-slf4j-impl</artifactId>
                        <version>2.8.2</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.logging.log4j</groupId>
                        <artifactId>log4j-core</artifactId>
                        <version>2.8.2</version>
                </dependency>
                <dependency>
                        <groupId>org.apache.logging.log4j</groupId>
                        <artifactId>log4j-web</artifactId>
                        <version>2.8.2</version>
                </dependency>
                <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                        <version>1.7.9</version>
                </dependency>
                <dependency>
                        <groupId>com.lmax</groupId>
                        <artifactId>disruptor</artifactId>
                        <version>3.2.0</version>
                </dependency>
 




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to