一、 故障概述
近三个月来,已有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.
Solution:
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客服。