[转帖]Solaris上WebLogic报too many open files错误_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3700 | 回复: 0   主题: [转帖]Solaris上WebLogic报too many open files错误        下一篇 
root
注册用户
等级:中尉
经验:470
发帖:31
精华:1
注册:2013-2-22
状态:离线
发送短消息息给root 加好友    发送短消息息给root 发消息
发表于: IP:您无权察看 2013-2-28 9:51:35 | [全部帖] [楼主帖] 楼主

一、 概述:

凌晨对XX系统做了压力测试,早上访问就报404错了。故障发生时未做线程堆栈。根据server的日志,对问题作出简要分析。

二、 系统环境:

OS版本:solaris

weblogic版本:813

三、 故障分析及解决方案:

n        故障分析:

出错日志如下


<2010-3-23上午05时47分40秒 CST> <Error> <HTTP> <BEA- 101019><[ServletContext(id=1213248,name=XXX,context-path=)] Servlet failed withIOException
java.io.FileNotFoundException:/bea/home/XXX/user_projects/domains/XXXdomain/applications/XXX/images/icon_arrow.gif(Too many open files)
atjava.io.FileInputStream.open(Native Method)
atjava.io.FileInputStream.<init>(FileInputStream.java:106)
atweblogic.utils.classloaders.FileSource.getInputStream(FileSource.java:23)
atweblogic.servlet.FileServlet.sendFile(FileServlet.java:559)
atweblogic.servlet.FileServlet.service(FileServlet.java:206)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:853)
atweblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
atweblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
atweblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
atcom.bos.ebank.servlet.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:88)
atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
atweblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6458)
atweblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
atweblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
atweblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
atweblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
atweblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
atweblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)


该报错是一个典型的错误,表示操作系统文件描述符过小。往往在压力测试或者系统并发量上来的时候会发生。

n        解决方案

关于设置solaris文件描述符:

1.首先要修改系统参数:

Solaris有两个参数控制进程可打开的文件描述符:rlim_fd_max,rlim_fd_cur。前者修改是个硬设置,修改需要权限,后者是个软设置,用户可以limit或者setrlimit() 修改,该值最大不能超过前者。一般我们在/etc/system里修改这两个参数

setrlim_fd_max = 8192
setrlim_fd_cur = 8192


注意点:修改完后需重启操作系统。

2.修改commEnv.sh

———–


直接在resetFd()中设置ulimit-n 8192

resetFd(){
      # if [! -n "`uname -s |grep -i cygwin || uname -s |grep -i windows_nt`" ]
      # then
      #maxfiles=`ulimit -H -n`
# if ["$?" = "0" -a "${maxfiles}" != 1024 ]; then
# if ["${maxfiles}" = "unlimited" ]; then
      #maxfiles=1025
      # fi
# if ["${maxfiles}" -lt 1024 ]; then
#ulimit -n ${maxfiles}
      # else
      #ulimit -n 1024
      # fi
      # fi
      # fi
      ulimit-n 8192
}


3.最后请您修改startWebLogic.sh,在“# START WEBLOGIC” 前加上以下语句:

echo———-
echoulimit -n
ulimit-n
echo———-


这样,当启动weblogicserver (尤其是managed server)时,会有如下log输出到标准输出中:

———-
ulimit-n
8192
———-


示例:

-bash-3.00#./startWebLogic.sh
.
.
JAVAMemory arguments: -Xms128m -Xmx128m -XX:CompileThreshold=8000-XXermSize=48m  -XX:MaxPermSize=128m
.
WLSStart Mode=Development
.
CLASSPATH=:/opt/bea9/patch_weblogic923/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/usr/jdk/instances/jdk1.5.0/lib/tools.jar
:/opt/bea9/weblogic92/server/lib/weblogic_sp.jar:/opt/bea9/weblogic92/server/lib/weblogic.jar:/opt/bea9/weblogic92/server/lib/webservices.jar::
/opt/bea9/weblogic92/common/eval/pointbase/lib/pbclient51.jar:/opt/bea9/weblogic92/server/lib/xqrl.jar::
.
PATH=/opt/bea9/weblogic92/server/bin:/usr/jdk/instances/jdk1.5.0/jre/bin:/usr/jdk/instances/jdk1.5.0/bin:/usr/sbin:/usr/bin
.
***************************************************
* To start WebLogic Server, use a username and   *
* password assigned to an admin-level user.  For *
* server administration, use the WebLogic Server *
* console at http://hostname:port/console       *
***************************************************
———-
ulimit-n
8192
———-
startingweblogic with Java version:
javaversion “1.5.0_17″
Java(TM)Platform, Standard Edition for Business (build 1.5.0_17-b04)
JavaHotSpot(TM) Client VM (build 1.5.0_17-b04, mixed mode, sharing)
StartingWLS with line:
/usr/jdk/instances/jdk1.5.0/bin/java-client   -Xms128m -Xmx128m -XX:CompileThreshold=8000-XXermSize=48m  -XX:MaxPermSize=128m  -Xverify:none  -da-Dplatform.home=/opt/bea9/weblogic92 -Dwls.home=/opt/bea9/weblogic92/server -Dwli.home=/opt/bea9/weblogic92/integration -Dweblogic.management.discover=true  -Dweblogic.threadpool.MinPoolSize=10-Dweblogic.threadpool.MaxPoolSize=10 -Dwlw.iterativeDev= -Dwlw.testConsole=-Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=/opt/bea9/patch_weblogic923/profiles/default/sysext_manifest_classpath-Dweblogic.Name=AdminServer-Djava.security.policy=/opt/bea9/weblogic92/server/lib/weblogic.policy  weblogic.Server
<Dec29, 2009 3:15:19 PM EST> <Notice> <WebLogicServer><BEA-000395> <Following extensions directory contents added to the endof the classpath:
/opt/bea9/weblogic92/platform/lib/p13n/p13n-schemas.jar:/opt/bea9/weblogic92/platform/lib/p13n/p13n_common.jar:/opt/bea9/weblogic92/platform/lib/p13n/p13n_system.jar:/opt/bea9/
weblogic92/platform/lib/wlp/netuix_common.jar:/opt/bea9/weblogic92/platform/lib/wlp/netuix_schemas.jar:/opt/bea9/weblogic92/platform/lib/
wlp/netuix_system.jar:/opt/bea9/weblogic92/platform/lib/wlp/wsrp-common.jar>
<Dec29, 2009 3:15:20 PM EST> <Info> <WebLogicServer><BEA-000377> <Starting WebLogic Server with Java HotSpot(TM) Client VMVersion 1.5.0_17-b04 from Sun Microsystems Inc.>
<Dec29, 2009 3:15:23 PM EST> <Info> <Management> <BEA-141107><Version: WebLogic Server 9.2 MP3  Mon Mar 10 08:28:41 EDT 2008 1096261>
<Dec29, 2009 3:15:28 PM EST> <Info> <WebLogicServer><BEA-000215> <Loaded License : /opt/bea9/license.bea>
<Dec29, 2009 3:15:28 PM EST> <Notice> <WebLogicServer><BEA-000365> <Server state changed to STARTING>


到此,参数修改成功,一般推荐的值是8192.




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