WebLogic9.2拒絕訪問的異常分析及解決方案
之前分析不對,特此改正
一、 故障概述
近三個月來,已有3次發生業務自動開通系統執行平臺維護系統訪問異常,所有頁面拒絕訪問并提示:
Connection rejected, the server is in the RUNNING state. Starting service weblogic.application.internal.BackgroundDeploymentService$WaitForBackgroundCompletion, 110 of 112. Last service weblogic.deploy.service.internal.adminserver.HeartbeatService took 2ms. |
多點施工管理平臺維護系統同時出現上述問題,部署這兩個維護系統的WebLogic服務器服務異常。
該故障使工單查詢、系統監控、失敗工單轉移和受理等功能無法使用。對業務工單的自動執行無影響,所有執行服務器正常。
每次均是采用強制停止服務后重啟的方式恢復服務。
二、 故障描述
訪問業務自動開通系統執行平臺維護系統和多點施工管理平臺維護系統均報以下異常:
Connection rejected, the server is in the RUNNING state. Starting service weblogic.application.internal.BackgroundDeploymentService$WaitForBackgroundCompletion, 110 of 112. Last service weblogic.deploy.service.internal.adminserver.HeartbeatService took 2ms. |
此時,網絡狀況、設備狀態、服務器操作系統均正常;WebLogic應用服務器異常,其控制臺無法正常訪問,顯示報告同業務自動開通系統執行平臺維護系統,且不能正常停止WebLogic服務。
經查,WebLogic應用服務器在記錄以下日志后無法正常訪問:
####<2011-8-13 上午10時46分15秒 CST> <Critical> <Server> <tfh-node2> <TFHWEB> <DynamicListenThread[Default]> <<WLS Kernel>> <> <> <1313203575118> <BEA-002616> <Failed to listen on channel "Default" on 132.60.5.29:8080, failure count: 2, failing for 1 seconds, java.net.SocketException: 無效的自變量> ####<2011-8-13 上午10時46分59秒 CST> <Critical> <Server> <tfh-node2> <TFHWEB> <DynamicListenThread[Default]> <<WLS Kernel>> <> <> <1313203619270> <BEA-002617> <Attempting to close and reopen the server socket on on channel "Default" on 132.60.5.29:8080.> ####<2011-8-13 上午10時47分09秒 CST> <Notice> <Server> <tfh-node2> <TFHWEB> <DynamicListenThread[Default]> <<WLS Kernel>> <> <> <1313203629287> <BEA-002614> <Reopening channel "Default" on 132.60.5.29:8080.> ####<2011-8-13 上午10時47分09秒 CST> <Notice> <Server> <tfh-node2> <TFHWEB> <DynamicListenThread[Default]> <<WLS Kernel>> <> <> <1313203629787> <BEA-002615> <After having failed to listen, the server is now listening on channel "Default" on 132.60.5.29:8080.> |
之后所有訪問均記錄如下日志:
####<2011-8-13 上午10時47分09秒 CST> <Notice> <Server> <tfh-node2> <TFHWEB> <DynamicListenThread[Default]> <<WLS Kernel>> <> <> <1313203629787> <BEA-002615> <After having failed to listen, the server is now listening on channel "Default" on 132.60.5.29:8080.> |
三、 處理過程和解決方法
使用正常停止WebLogic服務的命令無法停止服務,強行kill掉WebLogic服務進程,并按照正常流程啟動WebLogic服務
。
四、 故障分析和建議
1、故障的原因分析
此故障是由WebLogic9.2的bug導致,Oracle官方解釋如下:
在 Solaris 9 或更高版本上使用 JDK 1.5 時,半閉套接口上的任何設置操作都會引發 SocketException。這延遲了服務器在相同端口上接受新連接,而且如果故障間的最大補償時間達到最大值,還會導致回收服務器套接口。
需要安裝CR283953補丁解決該BUG。
以下為Oracle官方對CR283953補丁的英文解釋:
http://docs.oracle.com/cd/E13222_01/wls/docs100/issues/known_resolved.html
On Solaris 9 or later, with JDK 1.5, any set operation on a half-closed socket throws a SocketException. This delayed the server in accepting new connections on the same port and also caused the server socket to be recycled if the maximum backoff time between failures reaches its maximum.
WebLogic Server no longer throws an exception in connection with a set operation on half-closed sockets.
2、改進措施和計劃
1.為WebLogic服務編寫守護程序,定時查看WebLogic服務狀態,若出現故障則重啟WebLogic服務。守護程序采用crontab+shell腳本實現,參見《掃描日志重啟WebLogic服務shell腳本》。
2.獲取CR283953補丁,并安裝。BEA已被oracle收購,補丁已不能免費下載,具體詢oracle客服。
說明:IbosExecHistory系列表是提供歷史數據查詢的歷史表;
IbosExecHistory為試圖;
IbosExecHistory_XXXX中“XXXX”為年份,供存放該年所有歷史數據,此類表做歷史數據備份用,不提供維護系統查詢;
IbosExecHistory_month_X中“X”為月份(1-9不加0),此類表做循環使用,根據維護系統要求查詢時提供6個月內數據,故在此前六個月之外的數據可清楚。最后及時清楚,否則將造成與往年數據共存現象,較難分離。若造成累計,建議將數據使用bcp導出后,對文件進行操作,不要在數據庫中進行操作。
工作原理:為減少對數據庫性能造成影響,使用bcp和truncate table操作,做truncate table時應謹慎。
本文目的:提供IbosExecHistory_month_X表歷史數據清除步驟。
注:以下步驟以2010年5月份歷史數據清除為例,在實際操作中需更改重要sql語句,謹記。
具體步驟:
1.查詢年份表中是否已有該月數據,結果為0,則順序執行
select count(*) from IbosExecHistory_2010 where SendTime>='2010-05-01' and SendTime<'2010-06-01'
2.查詢月份表中是否已清除,結果不為0,則順序執行
select count(*) from IbosExecHistory_month_5
3.使用bcp命令進行數據導出,bcp命令OS命令,在已安裝sybase數據庫客戶端的系統上方可使用
bcp test..IbosExecHistory_month_5 out d:\IbosExecHistory_month_5.txt -c -t "{" -r "\r\n" -Uibos -Pibos123 -Stfh28
4.使用bcp命令進行數據導入
bcp test..IbosExecHistory_2010 in d:\IbosExecHistory_month_5.txt -c -t "{" -r "\r\n" -Uibos -Pibos123 -Stfh28
5.清除月份表數據
truncate table IbosExecHistory_month_5
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
28 | 29 | 30 | 1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
26 | 27 | 28 | 29 | 30 | 31 | 1 | |||
2 | 3 | 4 | 5 | 6 | 7 | 8 |