平台:AIX5.3.0.9+Weblogic 9.2
现象:启动weblogic服务,一段时间后,服务停止响应,表现为应用程序连接无法使用。
查看日志,有如下错误提示:
####<2009-12-9 上午11时30分33秒 GMT+08:00> <[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1260329433799> <[STUCK] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "654" seconds working on the request "weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl@5eea5eea", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
java.net.SocketOutputStream.socketWrite0(Native Method)
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:105)
java.net.SocketOutputStream.write(SocketOutputStream.java:149)
oracle.net.ns.DataPacket.send(Unknown Source)
oracle.net.ns.NetOutputStream.flush(Unknown Source)
oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)
oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:478)
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1060)
oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3422)
weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:718)
weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:460)
weblogic.common.resourcepool.ResourcePoolImpl.checkResource(ResourcePoolImpl.java:1455)
weblogic.common.resourcepool.ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1372)
weblogic.common.resourcepool.ResourcePoolImpl.checkAndReturnResource(ResourcePoolImpl.java:1362)
weblogic.common.resourcepool.ResourcePoolImpl.testUnusedResources(ResourcePoolImpl.java:1767)
weblogic.common.resourcepool.ResourcePoolImpl.access$700(ResourcePoolImpl.java:37)
weblogic.common.resourcepool.ResourcePoolImpl$ResourcePoolMaintanenceTask.timerExpired(ResourcePoolImpl.java:1935)
weblogic.timers.internal.TimerImpl.run(TimerImpl.java:265)
weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
>
解决:
重新部署应用,重新安装weblogic软件,均无法解决该问题。后经过与oracle技术支持确认,这个问题属于weblogic和IBM的JVM配合上的一个Bug(Bug8173442,或者叫CR370915),产生了线程死锁,故而引起服务停止响应。需要通过打补丁的方式来解决。
补丁的获取:
如果有购买weblogic产品,可以向oracle技术支持索取这个补丁。补丁是一个jar包。
如何打补丁:
1.在weblogic域目录下,找到weblogic的启动脚本,找到CLASSPATH一行
2.在CLASSPATH变量的最前面添加补丁jar包
例如: CLASSPATH=”${CLASSPATH}${CLASSPATHSEP}${MEDREC_WEBLOGIC_CLASSPATH}”
修改为
CLASSPATH=/bea/bug8173442_920.jar:”${CLASSPATH}${CLASSPATHSEP}${MEDREC_WEBLOGIC_CLASSPATH}”
3.以上操作仅对指定的domain起作用,为了对所有domain起作用,可以将jar包的路径添加到common/bin/的目录中的commEnv.sh文件中WEBLOGIC_CLASSPATH=最前面。
另外:
AIX下的各个版本的weblogic,8、9、10,均有可能发生此问题。解决方法类似。
很多朋友要这两个补丁,就不一一发了,上传上来,自己下载吧。
|
文件: |
8173442_92mp3.zip |
大小: |
10KB |
下载: |
下载 | |
|
文件: |
Bug8173442_920.zip |
大小: |
10KB |
下载: |
下载 | |
阅读(3696) | 评论(0) | 转发(0) |