上文我们介绍 sql 打印的时候提到是由于之前线上发生了 oom 相关的异常。所以对于线上的 jvm 启动的时候,我们是强制要求配置相关jvm 启动参数的。核心参数有:
-Xms8g -Xmx8g -Xss1m -XX:+UseG1GC -XX:MaxGCPauseMillis=150 -XX:InitiatingHeapOccupancyPercent=40 -XX:+HeapDumpOnOutOfMemoryError -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:gc.log -XX:ErrorFile=/logs/oom_dump/xxx.log -XX:HeapDumpPath=/logs/oom_dump/xxx.hprof
由于目前线上的 jdk 版本主要是 jdk1.8,所以这里使用的是 g1垃圾回收器。
这里整体来说参数比较重要,但是有3个核心的,分别是:
-XX:+ExitOnOutOfMemoryError -XX:ErrorFile=/logs/oom_dump/xxx.log -XX:HeapDumpPath=/logs/oom_dump/xxx.hprof
这里主要是记录线上的 java 程序是否发生了oom 内存溢出,同时把相关的内存溢出的日志给打印出来,方便进行排查。
以上的配置这款除了 oom 内存溢出相关的配置之外,其他的参数根据实际情况进行配置即可。但是强制配置上诉参数,是硬性的要求。
还没有评论,来说两句吧...