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

来源:互联网 发布:电子地图 数据库 编辑:程序博客网 时间:2024/06/15 23:40

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的错误需要查看RobotServerGC日志和heapdump日志。

6. RobotServer服务启动脚本里有配置生成RobotServerGC日志和在发生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命令

打印当前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已经不是当时产生heapOOMheapdump了。我们必须要在启动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中查看线程的具体报错信息。

0 0
原创粉丝点击