You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Liao,Kucheng (JIRA)" <ji...@apache.org> on 2017/12/21 02:02:00 UTC

[jira] [Created] (LOG4J2-2155) alway full gc on low memory

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)