任务:Weblogic 修改启动文件,添加GC参数,收集GC日志,以供之后使用工具分析
思考:应该在哪个文件的哪个位置配置哪个参数?
解决方案:
1)JDK分为IBM公司、HP公司、以前的SUN公司,还有BEA,这几家公司都有自己的JDK产品,而且是用得比较多的。这几家不同的JDK添加GC参数是不一样的。
JDK类型 | GC参数开关 | 如何生成 |
HP JDK | -verbose:gc -Xverbosegc:file=gc.log | 服务器启动后自动生成 |
IBM JDK | -verbose:gc -Xverbosegclog:gc.log | 服务器启动后自动生成 |
SUN JDK | -verbose:gc -Xloggc:gc.log | 服务器启动后自动生成 |
Oracle JRockit | -verbose:gc -Xverboselog:gc.log | 服务器启动后自动生成 |
2) 了解几个基本的JVM参数
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps(GC发生的时间)
-XX:+PrintGCApplicationStoppedTime(GC消耗了多少时间)
-XX:+PrintGCApplicationConcurrentTime(GC之间运行了多少时间)
-XX:-PrintGC 开启
GC日志打印。
默认不启用打印格式例如:1.556: [GC 69952K->9155K(253440K), 0.0423651 secs]
-XX:+PrintGCDetails打印
GC回收的细节。
打印格式例如:1.598: [GC1.598: [DefNew: 69952K->8704K(78656K), 0.0315432 secs] 69952K->9155K(253440K), 0.0317700 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
-XX:+PrintGCApplicationStoppedTime打印
GC回收期间程序暂停时间
打印格式例如:8.679: Total time for which application threads were stopped: 0.0378213 seconds
-XX:+PrintHeapAtGC 打印堆栈信息
打印格式例如:
{Heap before GC invocations=8 (full 0):
def new generation total 78656K, used 75041K [0x03e00000, 0x09350000, 0x0e8a0000)
eden space 69952K, 100% used [0x03e00000, 0x08250000, 0x08250000)
from space 8704K, 58% used [0x08250000, 0x087484e0, 0x08ad0000)
to space 8704K, 0% used [0x08ad0000, 0x08ad0000, 0x09350000)
tenured generation total 174784K, used 25879K [0x0e8a0000, 0x19350000, 0x23e00000)
the space 174784K, 14% used [0x0e8a0000, 0x101e5ed8, 0x101e6000, 0x19350000)
compacting perm gen total 131072K, used 43301K [0x23e00000, 0x2be00000, 0x33e00000)
the space 131072K, 33% used [0x23e00000, 0x26849548, 0x26849600, 0x2be00000)
No shared spaces configured.
10.842: [GC10.842: [DefNew: 75041K->7253K(78656K), 0.0295506 secs] 100920K->34750K(253440K), 0.0296728 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
Heap after GC invocations=9 (full 0):
def new generation total 78656K, used 7253K [0x03e00000, 0x09350000, 0x0e8a0000)
eden space 69952K, 0% used [0x03e00000, 0x03e00000, 0x08250000)
from space 8704K, 83% used [0x08ad0000, 0x091e56c0, 0x09350000)
to space 8704K, 0% used [0x08250000, 0x08250000, 0x08ad0000)
tenured generation total 174784K, used 27496K [0x0e8a0000, 0x19350000, 0x23e00000)
the space 174784K, 15% used [0x0e8a0000, 0x1037a338, 0x1037a400, 0x19350000)
compacting perm gen total 131072K, used 43301K [0x23e00000, 0x2be00000, 0x33e00000)
the space 131072K, 33% used [0x23e00000, 0x26849548, 0x26849600, 0x2be00000)
No shared spaces configured.
}
3) 一般加这些参数会加在:JAVA_OPTIONS 或 USER_MEM_ARGS中
实例:
weblogic 12c + sun jdk
假定当前域路径为DOMAIN_HOME
在%DOMAIN_HOME%\bin 下修改 setDomainEnv.cmd (Linux则修改setDomainEnv.sh文件)
set JAVA_OPTIONS=%JAVA_OPTIONS% -verbose:gc -Xloggc:log\gc.log -XX:+PrintGC
%DOMAIN_HOME%\log 文件夹需要已经存在,若不存在,要先创建。
启动weblogic,就可以在%DOMAIN_HOME%\log\gc.log 日志了