问题描述
1.当Weblogic Native IO 启用失败时,通常会在服务器启动日志中报如下错误:
####<Mar 31, 2009 9:09:29 PM GMT+08:00> <Debug> <RJVM> <odsapp1> <managered_server1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1238504969950> <BEA-000571> <Network Configuration Detail for Channel "managered_server1"
Channel Weight 50
Accept Backlog 50
Login Timeout 5000ms
Max Message Size 10000000
Message Timeout 60s
Idle Timeout 65s
Tunneling Timeout 40s
Tunneling Ping 45s>
####<Mar 31, 2009 9:09:29 PM GMT+08:00> <Info> <Server> <odsapp1> <managered_server1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1238504969974> <BEA-002609> <Channel Service initialized.>
####<Mar 31, 2009 9:09:29 PM GMT+08:00> <Error> <Socket> <odsapp1> <managered_server1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1238504969989> <BEA-000438> <Unable to load performance pack. Using Java I/O instead. Please ensure that a native performance library is in: '/weblogic/opt/java1.5/jre/lib/IA64N:/weblogic/opt/java1.5/jre/lib/IA64N/server:/weblogic/opt/java1.5/jre/../lib/IA64N:/weblogic/bea/patch_weblogic920/profiles/default/native :/weblogic/bea/weblogic92/server/native/hpux11/IPF32:/weblogic/bea/weblogic92/server/native/hpux11/IPF32/oci920_8:/usr/lib'
>
2. 同时,在系统使用过程中,常见报如下错误:
####<Apr 1, 2009 8:25:18 PM GMT+08:00> <Warning> <Socket> <odsapp1> <managered_server1> <DynamicListenThread[Default]> <<WLS Kernel>> <> <> <1238588718157> <BEA-000402> <There are: 5 active sockets, but the maximum number of socket reader threads allowed by the configuration is: 4. You may want to alter your configuration.>
####<2009-4-3 下午09时25分55秒 GMT+08:00> <Error> <HTTP> <odsapp1> <managered_server1> <[ACTIVE] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1238765155550> <BEA-101019> <[weblogic.servlet.internal.WebAppServletContext@1f5acd0 - appName: 'ODSWeb', name: 'ODSWeb', context-path: ''] Servlet failed with IOException
java.net.SocketException: 管道断开 (errno:32)
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:97)
at java.net.SocketOutputStream.write(SocketOutputStream.java:141)
at weblogic.utils.io.ChunkedOutputStream.writeTo(ChunkedOutputStream.java:185)
at weblogic.servlet.internal.ResponseHeaders.writeHeaders(ResponseHeaders.java:348)
at weblogic.servlet.internal.ServletResponseImpl.writeHeaders(ServletResponseImpl.
####<Apr 3, 2009 11:11:49 AM GMT+08:00> <Error> <HTTP> <odsapp1> <managered_server1> <[ACTIVE] ExecuteThread: '10' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1238728309518> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@b9614d - appName: 'ODSWeb', name: 'ODSWeb', context-path: ''] Root cause of ServletException.
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:574)
at javelin.client.ThreadPool.<init>(ThreadPool.java:49)
at javelin.client.ClientUtilsImpl.<init>(ClientUtilsImpl.java:92)
at javelin.client.ClientUtilsImpl.get(ClientUtilsImpl.java:106)
at com.bea.compiler.client.ClientUtils.get(ClientUtils.java:36)
问题解决
1. Weblogic Native IO 启用失败,通常是由于系统没有使用与Weblogic 相对应的的JDK版本所致。
2. 应当值得注意的是,在HP-UX中,通常存在PA-RISC和Itanium两个版本的Weblogic,如果在PA-RISC平台安装Itanium平台版本的Weblogic,或者在Itanium平台安装PA-RISC平台版本的Weblogic,同样会导致 Native IO 不可用。
3. HP-UX Weblogic 9.2 支持32位和64位的JDK,如果使用64位版本的JDK,需在启动脚本中加 -d64 参数,同时在commEnv.sh 配置文件中,注意修改“/weblogic/bea/weblogic92/server/native/hpux11/IPF32”,使其指向“/weblogic/bea/weblogic92/server/native/hpux11/IPF64”,否则会也会导致 Native IO 启用失败 。这一点多谢老王提醒 。
4. 使用 Weblogic Native IO 对系统性能至少有30%的提升(这个BEA 工程师说的),在生产环境中,注意检查 Native IO 是否可用。同时在安装Weblogic时,注意使用与之相对于版本的JDK。