weblogic服务器中止,在AIX上的Socket Close() 和 Poll() 线程死锁_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 7421 | 回复: 0   主题: weblogic服务器中止,在AIX上的Socket Close() 和 Poll() 线程死锁        下一篇 
yanghui
注册用户
等级:上尉
经验:584
发帖:92
精华:0
注册:2011-12-13
状态:离线
发送短消息息给yanghui 加好友    发送短消息息给yanghui 发消息
发表于: IP:您无权察看 2011-12-23 16:30:49 | [全部帖] [楼主帖] 楼主

weblogic服务器中止,在AIX上的Socket Close() 和 Poll() 线程死锁

应用:

Oracle Weblogic Server - Version: 8.1 to 10.3
IBM PS/2 AIX
IBM IA64 AIX
IBM AIX on POWER Systems (64-bit)
IBM ES9000 AIX/ESA
Bull Escala AIX
IBM RT/PC AIX
IBM 370 AIX
IBM AIX on POWER Systems (32-bit)
AIX Based Systems


现象

在IBM AIX平台上,所有的服务器中止。这中止与加载不相关,它通常会在服务器启动10分钟左右发生。一个线程转储揭露两个死锁的线程,一个执行 socket close() 另一个执行 socket poll()。例如:

'[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'' (TID:0x438F2000, sys_thread_t:0x438F9EF8, state:R, native ID:0x0037F035) prio=5
at java/net/PlainSocketImpl.socketClose0(Native Method)
at java/net/PlainSocketImpl.socketPreClose(PlainSocketImpl.java:744(Compiled Code))
at java/net/PlainSocketImpl.close(PlainSocketImpl.java:568(Compiled Code))
at java/net/SocksSocketImpl.close(SocksSocketImpl.java:1049(Compiled Code))
at java/net/Socket.close(Socket.java:1341(Compiled Code))
at weblogic/socket/WeblogicSocket.close(WeblogicSocket.java:80(Compiled Code))
at weblogic/socket/SocketMuxer.closeSocket(SocketMuxer.java:449(Compiled Code))
at weblogic/socket/SocketMuxer.cancelIo(SocketMuxer.java:773)
at weblogic/socket/SocketMuxer$TimerListenerImpl.timerExpired(SocketMuxer.java:976(Compiled Code))
at weblogic/timers/internal/TimerImpl.run(TimerImpl.java:273(Compiled Code))
at weblogic/work/SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464(Compiled Code))
at weblogic/work/ExecuteThread.execute(ExecuteThread.java:197(Compiled Code))
at weblogic/work/ExecuteThread.run(ExecuteThread.java:172(Compiled Code))
'ExecuteThread: '7' for queue: 'weblogic.socket.Muxer'' (TID:0x3511B500, sys_thread_t:0x34FAD6C8, state:R, native ID:0x003E80CB) prio=5
at weblogic/socket/PosixSocketMuxer.poll(Native Method)
at weblogic/socket/PosixSocketMuxer.processSockets(PosixSocketMuxer.java:102)
at weblogic/socket/SocketReaderRequest.run(SocketReaderRequest.java:29)
at weblogic/socket/SocketReaderRequest.execute(SocketReaderRequest.java:42)
at weblogic/kernel/ExecuteThread.execute(ExecuteThread.java:145)
at weblogic/kernel/ExecuteThread.run(ExecuteThread.java:117)


原因

weblogic服务器测试sockets,看是否有新的活动。麻烦就是在同一时间我们也要调用socket.close() 来清理客户端存在的socket

根据IBM设计:

1.在IBM JDK SR5 和SR7之间的基础TCP socket close()实现被更改了。部分改变的是现在使用的dup2

2.因为dup2改变了,在同一时间不能够调用poll() 和close() 方法,这会造成死锁

Bug 8173442 解决了这问题

解决方案

对于 bug 8173442补丁是可用的

    WLS 8.x的补丁能够在我的oracle支持里找到。打开补丁&更新标签。对于WLS 8.1mp3, 8.1mp4, a和 8.1mp5搜索补丁8173442,对于 WLS 8.1mp6搜索补丁8179792

对于WLS 9.x 以及更高版本的补丁,使用补丁号和验证码从智能更新里下载

------------------------------------------
PATCH REPOSITORY INFORMATION
------------------------------------------
WLS Version | Patch ID |  Passcode
------------+----------+----------------
9.2      |  T4DV    |  7C7PYV9B
9.2mp1   |  HZHQ    |  PTUYCCSI
9.2mp2   |  WJD2    |  GU1CW2AB
9.2mp3   |  GNLT    |  8J9L6Q4Y
10.0     |  PMAJ    |  9UQ69LLT
10.0mp1  |  ITVL    |  K8RBHQQ2
10.3     |  9YT5    |  I1DB5QSV
Fixed in: 10.0.2, 10.3.1


补丁和一个特殊的发布以及WLS维护包相绑定。例如:WLS 9.2.2的补丁有可能在WLS 9.2.3上不起作用。少数情况下,补丁也会指定特殊的操作系统。如果你对注释里概述的问题有经验,但是你WLS版本不在提供的补丁列表里,请联系技术支持,请求适合你版本的补丁。请参考注释和bug号来加快我们为你服务




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论