概述
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文件名称,pid表示Java进程号。
产生的.hprof文件使用HeapAnalyzer工具,HeapAnalyzer是一款针对IBM JDK的内存文本镜像HeapDump的分析工具。
二、JAVACORE文件分析IBM Thread and Monitor Dump Analyzer for Java工具
启动工具C:javabinjava –Xmx200m –jar jca13.jar
或
java –Xmx500m –jar jca13.jar E:/javacore.20060228.171037.2084.txt output.html
直接生成output.html
Javacore 文件产生原因
? 自动生成
– IBMJVM
? OutOfMemory
? 手动生成
– Kill -3
Javacore文件格式
– TITLE 文件头部分
– GPINFO 文件头部分
– ENVINFO 文件头部分
– MEMINFO 内存管理信息
– LOCKS 锁信息
– THREADS 线程信息
– CLASSES 类信息
TITLE部分
? 记录了引起Javadump的基本事件,时间和文件的名字
TITLE subcomponent dump routine
Dump Event “user” (00004000) received
Date: 2011/04/02 at 00:56:01
Javacore filename: /soft/bea/user_projects/domains/omega/javacore.20110402.005601.34176.txt
GPINFO部分
? 主要显示与操作系统方面有关的信息
0SECTION GPINFO subcomponent dump routine
NULL ================================
2XHOSLEVEL OS Level : AIX 5.3
2XHCPUS Processors -
3XHCPUARCH Architecture : ppc64
3XHNUMCPUS How Many : 24
ENVINFO部分
? 显示在JRE级别的信息、应用服务器命令行启动信息及虚拟机的环境变量信息
ENVINFO subcomponent dump routine
J2RE 5.0 IBM J9 2.3 AIX ppc64-64 build j9vmap6423-20071007
VM build 20071004_14218_BHdSMr
JIT enabled - 20070820_1846ifx1_r8
Running as a standalone JVM
/usr/java5_64/bin/java -Xmx3512m -Xms3512m -Xmn2450m -XX:PermSize=128m -Xmxcl25000
Java Home Dir: /usr/java5_64/jre
Java DLL Dir: /usr/java5_64/jre/bin
Sys Classpath: /usr/java5_64/jre/lib/vm.jar;/usr/java5_64/jre/lib/core.jar;/usr/j
UserArgs:
-Xjcl:jclscar_23
-Dcom.ibm.oti.vm.bootstrap.library.path=/usr/java5_64/jre/bin
-Dsun.boot.library.path=/usr/java5_64/jre/bin
-Djava.library.path=/usr/java5_64/jre/bin:/usr/java5_64/jre/bin:/usr/java
-Djava.home=/usr/java5_64/jre
MEMINFO部分
? 显示内存管理分配的信息,包含堆的空闲空间、当前堆的大小、垃圾收集历史
MEMINFO subcomponent dump routine
Bytes of Heap Space Free: 7902f578
Bytes of Heap Space Allocated: db800000
Internal Memory
segment start alloc end type bytes
000000012F2DCCB0 00000001306CB8B0 00000001306DB8A4 00000001306DB8B0 01000040 10000
000000012F2DD7F0 0000000130664FB0 0000000130674FA0 0000000130674FB0 01000040 10000
000000012F2DD130 0000000130674FD0 0000000130684FBC 0000000130684FD0 01000040 10000
<<>>
GC History
00:56:01:541818000 GMT j9mm.65 - LocalGC end: rememberedsetoverflow=0 causedremembereds
00:56:01:510589000 GMT j9mm.64 - LocalGC start: globalcount=1003 scavengecount=3226 wea
00:56:01:510033000 GMT j9mm.63 - Set scavenger backout flag=false
LOCK 部分
? 显示的与锁有关的信息
LOCKS subcomponent dump routine
Monitor pool info:
Current total number of monitors: 2
Monitor Pool Dump (flat & inflated object-monitors):
sys_mon_t:0x00039B40 infl_mon_t: 0x00039B80:
[email protected]/004B22AC: Flat locked by “DeadLockThread 1”
(0x41DAB100), entry count 1
Waiting to enter:
“DeadLockThread 0” (0x41DAAD00)
sys_mon_t:0x00039B98 infl_mon_t: 0x00039BD8:
[email protected]/004B229C: Flat locked by “DeadLockThread 0”
(0x41DAAD00), entry count 1
Waiting to enter:
“DeadLockThread 1” (0x41DAB100)
THREADS 部分
? 显示了所有的Java线程和栈跟踪方面的信息
“Signal Dispatcher” TID:0x41509200, j9thread_t:0x0003659C, state:R,prio=5
(native thread ID:5820, native priority:0, native policy:SCHED_OTHER)
at com/ibm/misc/SignalDispatcher.waitForSignal(Native Method)
at com/ibm/misc/SignalDispatcher.run(SignalDispatcher.java:84)
在第一行中的属性是线程的名字、线程标识符、JVM数据结构地址、当前状态和Java优先级。
在第二行中的属性是本地操作系统的线程ID、本地操作系统的优先级及本地操作系统调试机制。
? 线程的状态可以是以下值:
? R - Runnable – 线程在运行状态
? CW - Condition Wait – 线程在等待状态,主要有以下原因引起的:
– 调用了 sleep()。
– 线程在IO方面出现了阻塞。
– 调用了 wait(),在等待通知。
– 通过调用join()使两个线程同步。
? MW – waiting for monitor entry 线程在等待锁。
? S – Suspended – 另一个线程暂停当前线程。
? Z – Zombie – 线程被杀掉。
? P – Parked – 线程终结但还没有回收。
? B – Blocked – 线程阻塞,它在等待获取锁
CLASSES 部分
? 在类部分包含了类加载的概要信息和加载的类
– Application 加载器(sun/misc/Launcher$AppClassLoader),它是extension加载器的子类.
– Extension 加载器 (sun/misc/Launcher$ExtClassLoader),它是bootstrap加载器的子类。
– Bootstrap 加载器,众所周知它是系统加载器。
CLASSES subcomponent dump routine
Classloader summaries
12345678: 1=primordial,2=extension,3=shareable,4=middleware,5=system,6=trusted,7=application,8=delegating
p—st– Loader System(0x50007498)
Number of loaded libraries 12
Number of loaded classes 3675
-x–st– Loader sun/misc/Launcher$ExtClassLoader(0x50018598), Parent none(0x00000000)
Number of loaded libraries 0
Number of loaded classes 29
—–ta- Loader sun/misc/Launcher$AppClassLoader(0x500234C0), Parent sun/misc/Launcher$ExtClassLoader(0x50018598)
Number of loaded libraries 3
Number of loaded classes 11051
《——省略n行——》
ClassLoader loaded classes
Loader System(0x50007498)
org/apache/xpath/objects/XStringForFSB(0x3E76F238)
[Ljavax/naming/Binding;(0x3E76FAC0)
《——省略n行——》
org/apache/xpath/functions/Function3Args$Arg2Owner(0x3E770CA0)
Loader sun/misc/Launcher$AppClassLoader(0x500234C0)
weblogic/j2ee/descriptor/RelationshipsBean(0x38265960)
《——省略n行——》
weblogic/application/descriptor/AbstractMunger$3(0x3827F278)
最后
以上就是腼腆斑马为你收集整理的weblogic手动生成dump文件 linux命令,Weblogic HeapDump 配置的全部内容,希望文章能够帮你解决weblogic手动生成dump文件 linux命令,Weblogic HeapDump 配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复