Weblogic Native IO问题

简介:

Weblogic Native IO问题总结(转载)

在网上有不少关于WebLogic Native IO问题的文章,我挑选了3个最典型的例子做一下总结说明:以下的3个案例,虽然都跟Native IO有关,但实际情况不太相同,有相应平台32位跟64位的问题,也有执行权限的问题,希望读者能仔细去辨别。

3.11 典型案例一

a) 平台信息:

OS:AIX5308

JDK:java5_64

WLS:BEA Weblogic Server 10.0

b) 故障现象:

1.启动Weblogic时,服务器启动日志中报如下错误:

<unable to="" load="" performance="" pack.="" using="" java="" i="" o="" instead.="" <="" p="" style="word-wrap: break-word;">

Please ensure that libmuxer library is in :’

/usr/java5_64/jre/bin:/usr/java5_64/jre/bin:/usr/java5_64/jre/bin/classic:/usr

/java5_64/jre/bin

:/weblogic/bea/wlserver_10.0/server/native/aix/ppc:/usr/java5_64/jre/bin/j9vm

:/usr/lib’

2. 同时,在系统使用过程中,报如下错误:

<there are:="" 5="" active="" sockets,="" but="" the="" maximum="" number="" of="" socket="" reader="" threads="" allowed="" by="" configuration="" is:="" 4.<="" p="" style="word-wrap: break-word;">

You may want to alter your configuration.>

c) 故障分析:

根据经验,以上报错信息表明Weblogic Native IO启动失败。

d) 故障解决:

1. Weblogic Native IO 启用失败,通常是由于系统没有使用与Weblogic 相对应的的JDK版本所致。

2. AIX Weblogic 支持32位和64位的JDK,如果使用64位版本的JDK,需在启动脚本中加指向64位对应的目录,

同时在 commEnv.sh 配置文件中,/weblogic/bea/wlserver_10.0/common/bin|commEnv.sh

AIX)

  if [ -n "${LIBPATH}" ]; then

    LIBPATH=${LIBPATH}:${WL_HOME}/server/native/aix/ppc64

  else

    LIBPATH=${WL_HOME}/server/native/aix/ppc64

  fi

  LIBPATH=${PATCH_LIBPATH}:${LIBPATH}

  export LIBPATH

WEBLOGIC 默认的指向是ppc目录,不是ppc64目录,当时为了下载64位的libmuxer.so浪费了很长的时间,后来发现weblogic的目录下面已经存 在64位的。

3. 使用 Weblogic Native IO 对系统性能至少有30%的提升,在生产环境中,注意检查 Native IO 是否可用。同时在安装Weblogic时,注意使用与之相对于版本的JDK。

3.12 典型案例二

a) 平台信息:

HP-UX

Weblogic923

b) 故障现象:

1.当Weblogic Native IO 启用失败时,通常会在服务器启动日志中报如下错误:

#### <[ACTIVE] ExecuteThread: ’0′ for queue: ‘weblogic.kernel.Default (self-tuning)’> <> <> <> <1238504969950><network configuration="" detail="" for="" channel="" "managered_server1"<="" p="" style="word-wrap: break-word;">

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>

#### <[ACTIVE] ExecuteThread: ’0′ for queue: ‘weblogic.kernel.Default (self-tuning)’> <> <> <> <1238504969974>

#### <[ACTIVE] ExecuteThread: ’0′ for queue: ‘weblogic.kernel.Default (self-tuning)’> <> <> <> <1238504969989> <unable to="" load="" performance="" pack.="" using="" <="" strong="" style="word-wrap: break-word;">Java I/O instead. Please ensure that a nativeperformance 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. 同时,在系统使用过程中,常见报如下错误:

#### <> <> <> <1238588718157>[default]>

####<2009-4-3 下午09时25分55秒 GMT+08:00> <[ACTIVE] ExecuteThread: ’4′ for queue: ‘weblogic.kernel.Default (self-tuning)’> <> <> <> <1238765155550><[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.

#### <[ACTIVE] ExecuteThread: ’10′ for queue: ‘weblogic.kernel.Default (self-tuning)’> <> <> <> <1238728309518><[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.(ThreadPool.java:49)

at javelin.client.ClientUtilsImpl.(ClientUtilsImpl.java:92)

at javelin.client.ClientUtilsImpl.get(ClientUtilsImpl.java:106)

at com.bea.compiler.client.ClientUtils.get(ClientUtils.java:36)

c) 故障分析:

该故障很明显是在HP-UX上WebLogic Native IO启动失败。

d) 故障解决:

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。

3.13 典型案例三

a) 平台信息:

HP-UX

Weblogic90

b) 故障现象:

启动过程中发现

<BEA-000438> <Unable to loa

d performance pack. Using Java I/O instead. Please ensure that a native performa

nce library is in: ‘/opt/java1.5/jre/lib/IA64N:/opt/java1.5/jre/lib/IA64N/server

:/opt/java1.5/jre/../lib/IA64N::/opt/weblogic/bea/weblogic90/server/native/hpux1

1/IPF64:/opt/weblogic/bea/weblogic90/server/native/hpux11/PA_RISC:/opt/

weblogic/ bea/weblogic90/server/native/hpux11/PA_RISC/oci920_8:/usr/lib’

没有启动native io,导致系统性能低下(这里要注意HP-UX里IA64N下的是32位JDK,IA64W下的才是64位JDK),而且java io配置的值较小,产生如下报错

<BEA-000402><there are:="" <="" p="" style="word-wrap: break-word;">

5 active sockets, but the maximum number of socket reader threads allowed by the

configuration is: 4. You may want to alter your configuration.>

在应用使用过程中从而出现

<console enco="" <="" p="" style="word-wrap: break-word;">

untered the following error javax.servlet.jsp.JspException: Broken pipe (errno:3

2)

        at com.bea.console.taglib.html.tree.TreeTag.print(TreeTag.java:231)

        at com.bea.console.taglib.html.tree.TreeTag.doEndTag(TreeTag.java:192)

观察控制台的thread信息

Self-Tuning Thread Pool    

Active Execute Threads    Execute Thread Total Count    Execute Thread Idle Count    Queue Length    Pending User Request Count    Completed Request Count    Hogging Thread Count    Standby Thread Count    Throughput    Health

16    58    15    6048    0    144840    4    38    4.577865205875421    OK

排队的请求数多达6000个,导致了OutOfMemory,在JAVA堆还很空的情况下

c) 故障解决:

观察发现/opt/weblogic/bea/weblogic90/server/native/hpux11/IPF32下面和native io相关的libmuxer.so没有执行权限,chmod +x 后再次启动错误信息不再出现。










本文转自 赵大鑫 51CTO博客,原文链接:http://blog.51cto.com/xinzong/1696053,如需转载请自行联系原作者
目录
相关文章
|
Java Unix 应用服务中间件
使用Tomcat Native提升Tomcat IO效率
使用Tomcat Native提升Tomcat IO效率
|
1月前
|
存储 缓存 安全
Java 中 IO 流、File文件
Java 中 IO 流、File文件
|
17天前
|
Java Unix Windows
|
2天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
8 0
|
6天前
|
存储 缓存 Java
Java IO 流详解
Java IO 流详解
16 1
|
11天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
21 2
|
13天前
|
存储 Java Linux
【Java EE】 文件IO的使用以及流操作
【Java EE】 文件IO的使用以及流操作
|
18天前
|
存储 Java 数据库
[Java 基础面试题] IO相关
[Java 基础面试题] IO相关
|
18天前
|
缓存 Java API
Java NIO和IO之间的区别
NIO(New IO),这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。
16 1
|
21天前
|
Java
Java基础教程(12)-Java中的IO流
【4月更文挑战第12天】Java IO涉及输入输出,包括从外部读取数据到内存(如文件、网络)和从内存输出到外部。流是信息传输的抽象,分为字节流和字符流。字节流处理二进制数据,如InputStream和OutputStream,而字符流处理Unicode字符,如Reader和Writer。File对象用于文件和目录操作,Path对象简化了路径处理。ZipInputStream和ZipOutputStream则用于读写zip文件。