ITPub博客

首页 > 应用开发 > Java > 一次政府部门OA系统webloigc中间件BEA-000802引发出来的BUG

一次政府部门OA系统webloigc中间件BEA-000802引发出来的BUG

原创 Java 作者:jaymarco 时间:2020-11-09 10:38:52 0 删除 编辑

一、问题描述

2015/06/05 08:27左右开始,政府部门OA系统出现无法正常访问现象。经重启weblogic服务后系统恢复正常。
二、系统环境

操作系统:   redhat5.8
JDK版本:jdk1.5.0_22

Db版本: oracle 11g

中间件版本:WebLogic Server 9.2.2.0

集群:是

三、问题处理过程

3.1 处理过程

由于当时正是上班期间,而且应用系统已经不能访问,为了让系统能够正常使用,重启了服务系统恢复正常。

我们通过分析日志文件exoa02.log00261,发现故障时间是2015-06-05 08:27到2015-06-05 08:45 抛出量现BEA-000802错,最后导致exoa02和exoa01的服务不可用。

1、查看exoa02日志,大量报错日志如下

####<2015-6-5 上午08时27分30秒 CST> <Error> <Kernel> <exoaap> <exoa02> <[ACTIVE] ExecuteThread: '22' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1433464050489> <BEA-000802> <ExecuteRequest failed

 java.lang.IndexOutOfBoundsException: Index: 0, Size: 0.

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

     at java.util.ArrayList.RangeCheck(ArrayList.java:546)

     at java.util.ArrayList.get(ArrayList.java:321)

     at weblogic.rmi.cluster.BasicReplicaList.getPrimary(BasicReplicaList.java:91)

     at weblogic.rmi.cluster.ClusterableRemoteRef.getPrimaryRef(ClusterableRemoteRef.java:146)

     at weblogic.rmi.cluster.ClusterableRemoteRef.remove(ClusterableRemoteRef.java:475)

     at weblogic.rmi.cluster.ClusterableRemoteObject.onUnbind(ClusterableRemoteObject.java:264)

     at weblogic.jndi.internal.BasicNamingNode.unbindHere(BasicNamingNode.java:591)

     at weblogic.jndi.internal.ServerNamingNode.unbindHere(ServerNamingNode.java:306)

     at weblogic.jndi.internal.BasicNamingNode.unbind(BasicNamingNode.java:561)

     at weblogic.jndi.internal.WLEventContextImpl.unbind(WLEventContextImpl.java:201)

     at weblogic.cluster.BasicServiceOffer.retract(BasicServiceOffer.java:105)

     at weblogic.cluster.NodeInfo.retract(NodeInfo.java:200)

     at weblogic.cluster.TreeManager.retract(TreeManager.java:68)

     at weblogic.cluster.MemberServices.retractAllOffers(MemberServices.java:41)

     at weblogic.cluster.RemoteMemberInfo.shutdown(RemoteMemberInfo.java:141)

     at weblogic.cluster.MemberManager.checkTimeouts(MemberManager.java:386)

     at weblogic.cluster.MulticastManager.timerExpired(MulticastManager.java:695)

     at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:265)

     at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)

     at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)

     at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)

……………………………

####<2015-6-5 上午08时45分36秒 CST> <Error> <Kernel> <exoaap> <exoa02> <[ACTIVE] ExecuteThread: '24' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1433465136060> <BEA-000802> <ExecuteRequest failed

####<2015-6-5 上午08时45分42秒 CST> <Error> <Kernel> <exoaap> <exoa02> <[ACTIVE] ExecuteThread: '24' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1433465142344> <BEA-000802> <ExecuteRequest failed

2、从日志文件AdminServer.log和oaserver.log中可以找到托管的服务器将从服务器断开连接,然后重新连接每5分钟进行一次断连和重连接。

####<2015-6-5 上午09时46分57秒 CST> <Info> <RJVM> <exoaap> <oaserver> <[ACTIVE] ExecuteThread: '195' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1433468817733> <BEA-000513> <Failure in heartbeat trigger for RJVM: 3722662084176194844S:172.29.1.226:[-1,7001,-1,-1,-1,-1,-1]:exoadomain:AdminServer

 java.io.IOException: The connection manager to ConnectionManager for: 'weblogic.rjvm.RJVMImpl@36b4f5a - id: '3722662084176194844S:172.29.1.226:[-1,7001,-1,-1,-1,-1,-1]:exoadomain:AdminServer' connect time: 'Fri Jun 05 09:41:55 CST 2015'' has already been shut down.

java.io.IOException: The connection manager to ConnectionManager for: 'weblogic.rjvm.RJVMImpl@36b4f5a - id: '3722662084176194844S:172.29.1.226:[-1,7001,-1,-1,-1,-1,-1]:exoadomain:AdminServer' connect time: 'Fri Jun 05 09:41:55 CST 2015'' has already been shut down

     at weblogic.rjvm.ConnectionManager.getOutputStream(ConnectionManager.java:1692)

     at weblogic.rjvm.ConnectionManager.createHeartbeatMsg(ConnectionManager.java:1635)

     at weblogic.rjvm.ConnectionManager.sendHeartbeatMsg(ConnectionManager.java:611)

     at weblogic.rjvm.RJVMImpl$HeartbeatChecker.timerExpired(RJVMImpl.java:1540)

     at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:265)

     at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)

     at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)

     at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)

>

####<2015-6-5 上午09时47分07秒 CST> <Info> <Server> <exoaap> <oaserver> <[ACTIVE] ExecuteThread: '196' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1433468827754> <BEA-002635> <The server "AdminServer" connected to this server.>

####< 2015-6-5 上午09时47分07秒 CST> <Notice> <Log Management> <exoaap> <oaserver> <[ACTIVE] ExecuteThread: '195' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1433468827757> <BEA-170027> <The server initialized the domain log broadcaster successfully. Log messages will now be broadcasted to the domain log.>

####< 2015-6-5 上午09时52分07秒 CST> <Info> <Server> <exoaap> <oaserver> <[ACTIVE] ExecuteThread: '191' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1433469127759> <BEA-002634> <The server "AdminServer" disconnected from this server.>

3、检查配置文件config.xml发现集群地址配置有误,发现还是迁移前的地址。

3.2 问题原因

1 、发生在全局事务协议的数据源是emulatetwophasecommit,日志中频繁会产生错误

<BEA-000802><EXECUTEREQUESTFAILED JAVA.LANG.INDEXOUTOFBOUNDSEXCEPTION: INDEX,其原因是BUG。最终导致服务不可用。

2、问题是由于服务器没有指定监听的地址造成的。这将在一个多宿主的情况下造成的问题。 检查配置文件每个实例的监听地址都是空白的,请指定一个正确的监听地址。

3、配置文件config.xml集群地址配置有误。

3.3 故障优化建议

1、<BEA-000802><EXECUTEREQUESTFAILED JAVA.LANG.INDEXOUTOFBOUNDSEXCEPTION: INDEX问题建议打上补丁 Bug 11796397。目前9.2.2版本没有出这个补丁,建议将weblogic版本升级到高版本。

2、修改config.xml配置文件,将exoa01,exoa02,oaserver三个实例部分的,标签<listen-address></listen-address>指定主机地址为:172.29.1.226,保存config.xml配置文件,重启weblogic服务。

3、修改config.xml配置文件中的cluste-address的集群地址修改成正确的地址,<cluster-address>192.168.200.61:8001,192.168.200.61:8002</cluster-address>

请将192.168.200.61替换成172.29.1.226。保存配置文件,重启weblogic服务。

4、堆内存溢出heapdump文件自动生成,请在启动参数中JAVA_OPTIONS加入:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=\youpath\log 




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28833846/viewspace-2732918/,如需转载,请注明出处,否则将追究法律责任。

上一篇: weblogic常用命令
请登录后发表评论 登录
全部评论
负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维管理经验。目前专注研究云计算、中间件和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、PGCE和阿里云ACP等认证

注册时间:2020-06-22

  • 博文量
    76
  • 访问量
    36807