[原创]EPS-P端weblogic系统环境健康隐患_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3958 | 回复: 0   主题: [原创]EPS-P端weblogic系统环境健康隐患        下一篇 
yang.liu
注册用户
等级:少校
经验:1182
发帖:77
精华:1
注册:2014-1-3
状态:离线
发送短消息息给yang.liu 加好友    发送短消息息给yang.liu 发消息
发表于: IP:您无权察看 2014-3-20 17:32:54 | [全部帖] [楼主帖] 楼主

问题分析与建议

1.1   EPS-P端内存溢出的问题

问题描述:

     atmpServer定期有内存溢出的问题,目前通过定期重启解决。

分析:

     OutOfMemory有多种原因造成(a)java heap不足(b)IBM JDK内存碎片(c)应用程序内存泄漏(d)本地内存不足

     虽然目前拿到的信息不足以完全确定问题根本原因,但根据访谈和分析的情况(d)本地内存不足的可能性最大。理由如下:

(1)    在发生内存溢出时,维护人员观察到还抛出不能fork线程的信息。

(2)    从最近能拿到的gc log看,没有明显的heap堆内存泄漏的现象

(3)    维护工程师将heap堆从1g增加到1.5g,效果反而不好,发生内存溢出的周期变短。

(4)    应用中的确使用大量的自定义线程。

建议:

(1)进一步确认问题,需要收集长时间的heap dump,同时观察操作系统层面java进程的内存消耗情况。

(2)应用使用线程池机制

(3)考虑64bit的JDK

1.2   双机切换WebLogic启动失败问题

问题描述:

     4月6号双机测试,从P切到V成功,但从V切回P时,WebLogic atmpServer启动失败。后停止监控程序后启动成功。

分析建议:

导致启动失败的是如下错误:

####<2010-4-6 上午02时52分49秒 GMT+08:00> <Critical> <WebLogicServer> <ATMP_svc> <atmpServer> <main> <<WLS Kernel>> <> <> <1270493569958> <BEA-000386> <Server subsystem failed. Reason: java.lang.VerifyError: stack shape inconsistent (class: weblogic/jdbc/common/internal/DataSourceManager method: getJNDINameFromPoolName(Ljava/lang/String;)Ljava/lang/String;) at pc: 29
java.lang.VerifyError: stack shape inconsistent (class: weblogic/jdbc/common/internal/DataSourceManager method: getJNDINameFromPoolName(Ljava/lang/String;)Ljava/lang/String;) at pc: 29
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:63)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:124)
at weblogic.jdbc.common.internal.JDBCService.initialize(JDBCService.java:115)
at weblogic.jdbc.common.internal.JDBCService.start(JDBCService.java:138)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)


经分析,怀疑与JVM bug (defect 119309)有关:

http://www-01.ibm.com/support/docview.wss?rs=2344&context=SS3PGL&dc=DB520&dc=DB560&uid=swg21298148&loc=en_US&cs=UTF-8&lang=en&rss=ct2344tivoli


建议升级JDK到1.5 SR6 (当前SR4)

1.3   个别应用执行效率过低问题,线程超时

问题描述:

     在WebLogic服务器日志中,可以观察到线程执行时间超过600秒的错误信息。在P端和V端都有。且反复出现。

例如P端atmpServer:

####<2010-3-24 上午04时10分27秒 GMT+08:00> <Error> <WebLogicServer> <ATMP_svc> <atmpServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1269375027545> <BEA-000337> <[STUCK] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "613" seconds working on the request "weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl@324a324a", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
java.text.MessageFormat.makeFormat(MessageFormat.java:1458)
java.text.MessageFormat.applyPattern(MessageFormat.java:470)
java.text.MessageFormat.<init>(MessageFormat.java:365)
com.hisun.util.HiStringManager.getString(HiStringManager.java:177)
com.hisun.util.HiStringManager.getString(HiStringManager.java:218)
com.hisun.engine.invoke.impl.HiItem.process(HiItem.java:210)
com.hisun.engine.invoke.impl.HiProcess.process(HiProcess.java:24)
com.hisun.engine.HiEngineModel.process(HiEngineModel.java:198)
com.hisun.atc.bat.HiBatchProcess.exportFromDB(HiBatchProcess.java:571)
com.hisun.atc.bat.HiBatOnlAtl.ExportFromDB(HiBatOnlAtl.java:983)


P端mngServer:

####<2010-4-12 下午10时12分30秒 GMT+08:00> <Error> <WebLogicServer> <ATMP_svc> <mngServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1271081550113> <BEA-000337> <[STUCK] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "694" seconds working on the request "Http Request: /mng/app", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:155)
java.net.SocketInputStream.read(SocketInputStream.java:211)
com.hisun.tapestry.service.HiSocketUtil.readlen(HiSocketUtil.java:160)
com.hisun.tapestry.service.HiSocketUtil.read(HiSocketUtil.java:37)
com.hisun.tapestry.service.HiTCPCallHostService.tcpCallHost(HiTCPCallHostService.java:68)
com.hisun.tapestry.service.HiTCPCallHostService.callhost(HiTCPCallHostService.java:37)


V端:

####<2010-1-20 下午03时44分33秒 GMT+08:00> <Error> <WebLogicServer> <ATMV_svc> <AdminServer> <[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1263973473446> <BEA-000337> <[STUCK] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "607" seconds working on the request "Http Request: /shepherd/pages/docFileView.do", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:155)
java.io.DataInputStream.read(DataInputStream.java:160)
com.zjft.shepherd.common.SocketUtil.readSocket3(SocketUtil.java:210)
com.zjft.shepherd.common.FileUtil.getRvcFile(FileUtil.java:245)
com.zjft.shepherd.business.control.DevDocFileViewAction.DownloadFile(DevDocFileViewAction.java:446


解决建议:

联系开发人员根据日志中的应用代码堆栈以及请求内容,对相关的长时间超时的问题进行排查。在发生这个问题的同时,可以做多次(1分钟做3-4次)kill -3 <javapid>,然后获取thread dump,分析当前的所有线程的状态来确定定位的原因。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论