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