5月份上了一个版本,可是好景不长,第一个星期宕机了一次,第二周的周一,发现宕机了两次,均是OOM,这个对于银行的生产环境来说,非常严重。所以需要尽快分析日志dump文件来分析,到底是什么原因。查找到原来是导出csv70W+导致,所以需要对相关代码进行更改。找到这篇文章,对解决weblogic OOM有所思路一般报OOM异常都是代码有问题,所以写代码一定要谨慎一些。
悲催的前个星期,生产环境的Weblogic连续两次OOM(OutofMemory)后宕机,不得不在礼拜日回去看log分析问题。
但是由于内存参数没有配置GC参数,没能生成当时宕机前的HeapDump文件。所以还是要配置上GC参数才能在下次查出问题根本。
配置内存参数方法,没找到在Weblogic console那里直接可以配置内存参数的方法,只能直接在bea/user_projects/domains/domain/bin/setDomainEnv.sh上增加
“-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak -Xloggc:$$.gc.log ” -XX之间用空格分隔
配置如下:
-XX:+PrintGCDetails: 用来跟踪系统GC的详细情况;
-Xloggc:$$.gc.log: 将每次GC事件的相关情况记录到一个文件中。
-XX:+PrintGCTimeStamps: 可与-XX:+PrintGC -XX:+PrintGCDetails混合使用输出形式:11.851:
[GC 98328K->93620K(130112K), 0.0082960 secs]
-XX:+HeapDumpOnOutOfMemoryError: JVM在出现OOM异常的时候Dump出内存映像文件
-XX:+HeapDumpOnCtrlBreak:表示可以通过 kill -3 pid 根据需要产生DUMP文件
但注意:
Oracle JVM的6.0版本去掉了-XX:+HeapDumpOnCtrlBreak参数,如果需要产生DUMP文件,请采用jmap命令,命令行格式如下:jmap -dump:format=b,file=managed1_heapdump.hprof
其中managed1_heapdump.hprof表示生成的DUMP文件名称&