一次政府部門OA系統webloigc中介軟體BEA-000802引發出來的BUG

jaymarco發表於2020-11-09

一、問題描述

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問題建議打上補丁 。目前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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章