您的位置:首页 > 其它

Weblogic中间件实例不可连接分析方法

2015-05-08 09:46 232 查看
Weblogic中间件实例不可连接。

1. 登录该weblogic的控制台中检查RobotServer状态为unknown2. 点击servers->RobotServer->Monitoring,发现不可打开。
3. 登录inyq0app04主机,执行ps
-ef|grep RobotServer查看进程是否存在。
xiaoi@inyq0app04:/home/ap/xiaoi/user_projects/domains/xiaoi_robot/logs>ps-ef|grep -i robotserver
xiaoi     312823241  0 20:36 pts/2    00:00:00 grep -i robotserver
xiaoi    21854     1  010:42 ?        00:00:00 /bin/sh./bin/startManagedWebLogic.sh RobotServer t3://localhost:6002
xiaoi   21924 21855  8 10:42 ?        00:49:05 /usr/java6//bin/java -server-Xms1536m -Xmx1536m -XX:MaxPermSize=256m -verbose:gc-Xloggc:/home/ap/xiaoi/user_projects/domains/xiaoi_robot/logs/robotServergc.log-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/home/ap/xiaoi/user_projects/domains/xiaoi_robot/logs/robotServer.hprof-Djavax.xml.stream.XMLInputFactory=weblogic.xml.stax.XMLStreamInputFactory-DpropertiesEncrypted=true -Drobot.logDisabledUserIdPrefix=sms:branch_
-da-Dplatform.home=/home/mw/weblogic/bea/wlserver_10.3-Dwls.home=/home/mw/weblogic/bea/wlserver_10.3/server-Dweblogic.home=/home/mw/weblogic/bea/wlserver_10.3/server-Dweblogic.management.discover=false-Dweblogic.management.server=t3://localhost:6002 -Dwlw.iterativeDev=false-Dwlw.testConsole=false
-Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=/home/mw/weblogic/bea/patch_wls1030/profiles/default/sysext_manifest_classpath:/home/mw/weblogic/bea/patch_cie660/profiles/default/sysext_manifest_classpath-Djava.security.egd=file:/dev/./urandom -Dweblogic.Name=RobotServer-Djava.security.policy=/home/mw/weblogic/bea/wlserver_10.3/server/lib/weblogic.policyweblogic.Server
4. 进程存在,查看RobotServer的nohup日志中是否有OutOfMemory
cd/home/ap/xiaoi/user_projects/domains/xiaoi_robot/logs
grep –i outofmemory robotServer.log
xiaoi@inyq0app04:/home/ap/xiaoi>cd user_projects/domains/xiaoi_robot/logs
xiaoi@inyq0app04:/home/ap/xiaoi/user_projects/domains/xiaoi_robot/logs>grep-i outofmemory robotServer.log
java.lang.OutOfMemoryError: Java heap space
Exception in thread "pool-3-thread-1"java.lang.OutOfMemoryError: Java heap space
Exception in thread "pool-3-thread-2"java.lang.OutOfMemoryError: Java heap spaceHeap
Caused by: java.lang.OutOfMemoryError: Java heap space
<2013-11-14 ÏÂÎç05ʱ30·Ö48Ãë
CST><Error> <Server> <BEA-002608> <The ListenThread because ofan error: java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
 java.lang.OutOfMemoryError: Java heap space.
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
 java.lang.OutOfMemoryError: Java heap space.
java.lang.OutOfMemoryError: Java heap space
<2013-11-14 ÏÂÎç05ʱ30·Ö48Ãë
CST><Error> <Server> <BEA-002608> <The ListenThread because ofan error: java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
 java.lang.OutOfMemoryError:Java heap space.
java.lang.OutOfMemoryError: Java heap space
 java.lang.OutOfMemoryError: Java heap space.
java.lang.OutOfMemoryError: Java heap space
Exception in thread "[STANDBY]ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'"java.lang.OutOfMemoryError: Java heap space
5. 发现日志中有报“java.lang.OutOfMemoryError: Java heapspace”的错误,需要查看RobotServer的GC日志和heapdump日志。
6. 在RobotServer服务启动脚本里有配置生成RobotServer的GC日志和在发生OOM的情况下生成heapdump日志的参数(红色标出具体参数);
xiaoi@inyq0app04:/home/ap/xiaoi/user_projects/domains/xiaoi_robot>virobotServer.sh
USER_MEM_ARGS="-Xms1536m -Xmx1536m-XX:MaxPermSize=256m -verbose:gc-Xloggc:/home/ap/xiaoi/user_projects/domains/xiaoi_robot/logs/robotServergc.log-XX:+PrintGCTimeStamps -XX:+PrintGCDetails
-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/home/ap/xiaoi/user_projects/domains/xiaoi_robot/logs/robotServer.hprof"
export USER_MEM_ARGS
nohup ./bin/startManagedWebLogic.shRobotServer t3://localhost:6002 >logs/robotServer.log &

 
7. 用GC日志查看工具ga.jar查看GC日志,在运维终端打开cmd窗口,执行
Java –jar C:\Users\ccb\Desktop\ga.jar,打开工具后打开GC日志,如下图:

 
点击查看图形界面,如下图,点击右边工具栏usedTenured+New发现heap区域瞬时占满,使用1.2G,并且没有回收,然后查看heapdump日志。
8. 使用MemoryAnalyzer.exe工具分析heapdump日志
Mat打开方式,打开cmd窗口
进入:C:\TDDOWNLOAD\MemoryAnalyzer-1.2.1.20121105-win32.win32.x86_64\mat>

执行:MemoryAnalyzer.exe -vmargs -Xmx8g
打开heapdump文件,
 
综合分析认为,本次故障原因与robot_log_faqrank_task有关。

附录:jstat、jmap、kill -3命令使用方法:

如果要使用这三个命令,需要在应用用户目录下添加环境变量,具体方法如下:
vi .bash_profile
PATH=/usr/java6/bin:$PATH
export PATH
保存后执行以下命令:
source .bash_profile
1.jstat
aace
命令
打印当前heap区域使用情况以及GC情况,示例如下:
说明主要看O列,当O列达到80%以上以及FGC列的次数很多时表示系统heap区域内存不足,server已经是不健康的。
执行jstat -gcutilPID 1000
jstat -gcutil 28231 1000
 S0     S1     E     O      P     YGC    YGCT    FGC    FGCT    GCT  

100.00  0.00  64.54  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  64.54 17.39  99.78     58   2.829     0    0.000   2.829
100.00  0.00  64.70  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  64.87  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  65.41  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  65.41  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  65.41  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  65.41  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  65.98  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  65.98  17.39 99.78     58    2.829    0    0.000    2.829
100.00  0.00  65.98  17.39 99.78     58    2.829     0   0.000    2.829
100.00  0.00  65.98  17.39 99.78     58    2.829    0    0.000    2.829
 
2.jmap命令
执行jmap-dump:format=b,file=/home/weblogic/heapoom.dump <pid>
生成heap dump文件,用MemoryAnalyzer进行分析。
这种方法生成的heapdump实时性不够,因为当产生heapOOM之后,再利用jmap命令产生的heapdump已经不是当时产生heapOOM的heapdump了。我们必须要在启动weblogic
server进程的时候,加入命令参数,使得当产生heapOOM时,系统立刻产生heapdump,以便我们进行分析。
在domain目录/bin/setDomainEnv.sh中添加以下内容:
USER_MEM_ARGS="-Xms256m -Xmx512m-XX:MaxPermSize=128m -verbose:gc -Xloggc:/tmp/wls_log/gc_ms.log -XX:+HeapDumpOnOutOfMemoryError"
export USER_MEM_ARGS
解释如下:
-verbose:gc-Xloggc:/tmp/wls_log/gc_ms.log
生成GC的日志(当启动WLServer时候会自动生成)
-XX:+HeapDumpOnOutOfMemoryError
当系统出现heap OOM,会自动出现dump文件,在自己domain目录下,文件名是java_pid4848.hprof
 
3.kill -3命令
kill -3 PID
当应用页面不能访问时,使用kill-3 PID命令抓取当时进程中线程的使用情况,输出保存在server的nohup日志中,
可以查看线程的具体报错信息。
也可以使用jstack命令,jstackPID > /tmp/aaa.log,在log中查看线程的具体报错信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: