Chinaunix首页 | 论坛 | 博客
  • 博客访问: 313453
  • 博文数量: 45
  • 博客积分: 2170
  • 博客等级: 大尉
  • 技术积分: 1090
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-18 10:49
文章分类

全部博文(45)

文章存档

2011年(6)

2010年(4)

2009年(23)

2008年(12)

我的朋友

分类:

2009-12-17 17:25:07

平台: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) |
给主人留下些什么吧!~~