Too many open files 问题的解决

CNSDYT 2008-10-15 09:18:07
非常着急,困扰了我很长时间了。
我在网站上找了很多资料,包括这里的解决的方式,都没有能够得到解决。我的服务器已经放了100多个网站了。
有时候服务器晚上刚刚重起,第二天刚上班访问就会出现too many open files。
注:我这里某些网站用了oscache。并且每次重起计算机的时候都是直接reboot。
下面是ulimit -a打印出来的问题。
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 300000
cpu time (seconds, -t) unlimited
max user processes (-u) 32762
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited



------------------------------------------------------------------------



键入以下命令查找打开文件最多的信息如下:

# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more

[root@linux tomcat-5.5]# ps -aef|grep 8375
root 8375 1 9 08:39 pts/1 00:02:30 /pro/java/jdk1.5.0_11/bin/java -Xms512m -Xmx900m -XX:PermSize=300m -XX:MaxPermSize=512m -XX:MaxNewSize=300m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/tomcat-5.5/conf/logging.properties -Djava.endorsed.dirs=/opt/tomcat-5.5/common/endorsed -classpath :/opt/tomcat-5.5/bin/bootstrap.jar:/tpo/tomcat-5.5/bin/commons-logging-api.jar -Dcatalina.base=/tpo/tomcat-5.5 -Dcatalina.home=/tpo/tomcat-5.5 -Djava.io.tmpdir=/tpo/tomcat-5.5/temp org.apache.catalina.startup.Bootstrap start
root 8764 8292 0 09:05 pts/1 00:00:00 grep 8375


------------------------------------------------------------------------

我的这里tomcat出异常如下:

2008-10-15 8:15:00 org.apache.tomcat.util.net.PoolTcpEndpoint acceptSocket
严重: Endpoint ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=80] ignored exception: java.net.SocketException: Too many open files
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
at java.net.ServerSocket.implAccept(ServerSocket.java:450)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:408)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:71)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
2008-10-15 8:15:00 org.apache.tomcat.util.net.PoolTcpEndpoint acceptSocket
警告: Reinitializing ServerSocket
java.io.FileNotFoundException: /webadmin/set_formxx.jsp (Too many open files)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at org.apache.naming.resources.FileDirContext$FileResource.streamContent(FileDirContext.java:975)
at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:307)
at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:370)
at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:333)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:561)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:299)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at jereh.web21sun.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:121)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
...全文
879 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
海诗美妆 2008-10-17
  • 打赏
  • 举报
回复
程序内部对OS文件系统的I/O访问太多。
临时的解决方法是重启服务器,
根本方法是优化程序内部I/O处理
shanxmxj 2008-10-16
  • 打赏
  • 举报
回复
http://hghdo.javaeye.com/blog/65175
"Tomcat [java.net.SocketException: Too many open files 解决方法"

去这里看看 貌似和你的问题很相似,应该可以解决吧。
goosman 2008-10-15
  • 打赏
  • 举报
回复
java.io.FileNotFoundException: /webadmin/set_formxx.jsp (Too many open files)
关键应该是这一句吧,文件未找到....
showde123 2008-10-15
  • 打赏
  • 举报
回复
帮顶。 以前没有接触过 有关服务器这些。
huoyin 2008-10-15
  • 打赏
  • 举报
回复
在这儿去查查看:
http://www.redhat.com/search

然后输入too many open files
lihan6415151528 2008-10-15
  • 打赏
  • 举报
回复
没有读取 应该没找到吧
CNSDYT 2008-10-15
  • 打赏
  • 举报
回复
java.io.FileNotFoundException: /webadmin/set_formxx.jsp

这是程序执行的。没有对他进行读取。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧