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有关。
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中查看线程的具体报错信息。
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中查看线程的具体报错信息。
相关文章推荐
- Java开发之Spring连接数据库方法实例分析
- 排查Java线上服务故障的方法和实例分析
- C#计算矩阵的逆矩阵方法实例分析
- Symfony数据校验方法实例分析
- php判断是否连接上网络的方法实例详解
- javascript实现html页面之间参数传递的四种方法实例分析
- 回归分析方法应用实例2
- 编程要学会绕道而行:实例分析--另一种绘制空心字的方法.
- "ObjectContext 实例已释放,不可再用于需要连接的操作"MVC开发出错解决方案
- C#连接Oracle的方法实例总结
- JS数组排序方法实例分析
- 本地连接不见了的分析及解决方法
- Hadoop源码分析之IPC连接与方法调用
- jQuery动画效果相关方法实例分析
- thinkPHP线上自动加载异常与修复方法实例分析
- java方法重写实例分析
- java 通过JDBC连接Mysql数据库的方法和实例
- Java通过JDBC连接Mysql数据库的方法和实例
- Javascript中String的常用方法实例分析
- javascript数组去重常用方法实例分析