一、 故障概述
近三個(gè)月來,已有3次發(fā)生業(yè)務(wù)自動(dòng)開通系統(tǒng)執(zhí)行平臺(tái)維護(hù)系統(tǒng)訪問異常,所有頁面拒絕訪問并提示:
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. |
多點(diǎn)施工管理平臺(tái)維護(hù)系統(tǒng)同時(shí)出現(xiàn)上述問題,部署這兩個(gè)維護(hù)系統(tǒng)的WebLogic服務(wù)器服務(wù)異常。
該故障使工單查詢、系統(tǒng)監(jiān)控、失敗工單轉(zhuǎn)移和受理等功能無法使用。對(duì)業(yè)務(wù)工單的自動(dòng)執(zhí)行無影響,所有執(zhí)行服務(wù)器正常。
每次均是采用強(qiáng)制停止服務(wù)后重啟的方式恢復(fù)服務(wù)。
二、 故障描述
訪問業(yè)務(wù)自動(dòng)開通系統(tǒng)執(zhí)行平臺(tái)維護(hù)系統(tǒng)和多點(diǎn)施工管理平臺(tái)維護(hù)系統(tǒng)均報(bào)以下異常:
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. |
此時(shí),網(wǎng)絡(luò)狀況、設(shè)備狀態(tài)、服務(wù)器操作系統(tǒng)均正常;WebLogic應(yīng)用服務(wù)器異常,其控制臺(tái)無法正常訪問,顯示報(bào)告同業(yè)務(wù)自動(dòng)開通系統(tǒng)執(zhí)行平臺(tái)維護(hù)系統(tǒng),且不能正常停止WebLogic服務(wù)。
經(jīng)查,WebLogic應(yīng)用服務(wù)器在記錄以下日志后無法正常訪問:
####<2011-8-13 上午10時(shí)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時(shí)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時(shí)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時(shí)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時(shí)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服務(wù)的命令無法停止服務(wù),強(qiáng)行kill掉WebLogic服務(wù)進(jìn)程,并按照正常流程啟動(dòng)WebLogic服務(wù)
。
四、 故障分析和建議
1、故障的原因分析
此故障是由WebLogic9.2的bug導(dǎo)致,Oracle官方解釋如下:
在 Solaris 9 或更高版本上使用 JDK 1.5 時(shí),半閉套接口上的任何設(shè)置操作都會(huì)引發(fā) SocketException。這延遲了服務(wù)器在相同端口上接受新連接,而且如果故障間的最大補(bǔ)償時(shí)間達(dá)到最大值,還會(huì)導(dǎo)致回收服務(wù)器套接口。
需要安裝CR283953補(bǔ)丁解決該BUG。
以下為Oracle官方對(duì)CR283953補(bǔ)丁的英文解釋:
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.
Solution:
WebLogic Server no longer throws an exception in connection with a set operation on half-closed sockets.
2、改進(jìn)措施和計(jì)劃
1.為WebLogic服務(wù)編寫守護(hù)程序,定時(shí)查看WebLogic服務(wù)狀態(tài),若出現(xiàn)故障則重啟WebLogic服務(wù)。守護(hù)程序采用crontab+shell腳本實(shí)現(xiàn),參見《掃描日志重啟WebLogic服務(wù)shell腳本》。
2.獲取CR283953補(bǔ)丁,并安裝。BEA已被oracle收購,補(bǔ)丁已不能免費(fèi)下載,具體詢oracle客服。