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

这两天处理了一个故障:

一、 概述:

2010年3月23日凌晨对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 with IOException
java.io.FileNotFoundException: /bea/home/XXX/user_projects/domains/XXXdomain/applications/XXX/images/icon_arrow.gif (Too many open files)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at weblogic.utils.classloaders.FileSource.getInputStream(FileSource.java:23)
at weblogic.servlet.FileServlet.sendFile(FileServlet.java:559)
at weblogic.servlet.FileServlet.service(FileServlet.java:206)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at com.bos.ebank.servlet.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:88)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6458)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)


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

n 解决方案

关于设置solaris文件描述符:

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

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

set rlim_fd_max = 8192
set rlim_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 ———-
echo ulimit -n
ulimit -n
echo ———-


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

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


示例:

-bash-3.00# ./startWebLogic.sh
.
.
JAVA Memory arguments: -Xms128m -Xmx128m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m
.
WLS Start 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
———-
starting weblogic with Java version:
java version “1.5.0_17″
Java(TM) Platform, Standard Edition for Business (build 1.5.0_17-b04)
Java HotSpot(TM) Client VM (build 1.5.0_17-b04, mixed mode, sharing)
Starting WLS with line:
/usr/jdk/instances/jdk1.5.0/bin/java -client -Xms128m -Xmx128m -XX:CompileThreshold=8000 -XX:PermSize=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
<Dec 29, 2009 3:15:19 PM EST> <Notice> <WebLogicServer> <BEA-000395> <Following extensions directory contents added to the end of 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>
<Dec 29, 2009 3:15:20 PM EST> <Info> <WebLogicServer> <BEA-000377> <Starting WebLogic Server with Java HotSpot(TM) Client VM Version 1.5.0_17-b04 from Sun Microsystems Inc.>
<Dec 29, 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 >
<Dec 29, 2009 3:15:28 PM EST> <Info> <WebLogicServer> <BEA-000215> <Loaded License : /opt/bea9/license.bea>
<Dec 29, 2009 3:15:28 PM EST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING>


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




赞(0)    操作        顶端 
arcona
注册用户
等级:少校
经验:1100
发帖:10
精华:0
注册:2015-6-1
状态:离线
发送短消息息给arcona 加好友    发送短消息息给arcona 发消息
发表于: IP:您无权察看 2016-8-31 10:26:13 | [全部帖] [楼主帖] 2  楼

顶一下~



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