非常着急,困扰了我很长时间了。
我在网站上找了很多资料,包括这里的解决的方式,都没有能够得到解决。我的服务器已经放了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)

解决方案 »

  1.   

    java.io.FileNotFoundException: /webadmin/set_formxx.jsp (Too many open files) 
    关键应该是这一句吧,文件未找到....
      

  2.   

    java.io.FileNotFoundException: /webadmin/set_formxx.jsp这是程序执行的。没有对他进行读取。
      

  3.   

    在这儿去查查看:
    http://www.redhat.com/search然后输入too many open files
      

  4.   

    http://hghdo.javaeye.com/blog/65175
    "Tomcat [java.net.SocketException: Too many open files 解决方法"去这里看看 貌似和你的问题很相似,应该可以解决吧。
      

  5.   

    程序内部对OS文件系统的I/O访问太多。
    临时的解决方法是重启服务器,
    根本方法是优化程序内部I/O处理