Jetty - linux -Too many open files-阿里云开发者社区

开发者社区> 开发与运维> 正文

Jetty - linux -Too many open files

简介: 今天碰到个问题,jetty系统跑的时候点击页面突然报 internal server error 错,翻了一下日志,发现很多jsp not found的错误: 2013-11-28 04:29:16,500 WARN [SymmetricDS]...

今天碰到个问题,jetty系统跑的时候点击页面突然报 internal server error 错,翻了一下日志,发现很多jsp not found的错误:

2013-11-28 04:29:16,500 WARN [SymmetricDS] [log] [1002316844@qtp-718123118-23] /xx/xx/xx/xx/xx/xx-wizard.do
org.apache.jasper.JasperException: PWC6117: File "/common/error.jsp" not found
        at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:89)
        at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:375)
        at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:169)
        at org.apache.jasper.compiler.JspUtil.getInputStream(JspUtil.java:910)
        at org.apache.jasper.xmlparser.XMLEncodingDetector.getEncoding(XMLEncodingDetector.java:143)
        at org.apache.jasper.compiler.ParserController.determineSyntaxAndEncoding(ParserController.java:376)
        at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:210)

继续翻,看到一个可疑的地方:

2013-11-28 04:29:10,552 WARN [] [log] [1059039254@qtp-718123118-25] Nested in org.apache.jasper.JasperException: PWC6344: Unable to create output writer for file ../xx/WEB-INF/jspclasses/org/apache/jsp/common/error_jsp.java:
java.io.FileNotFoundException: ../xx/WEB-INF/jspclasses/org/apache/jsp/common/error_jsp.java (Too many open files)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
        at org.apache.jasper.compiler.JDTJavaCompiler.getJavaWriter(JDTJavaCompiler.java:149)
        at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:188)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:435)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

 

看来是因为jetty进程打开文件数的限制,导致进程不能生成jsp页面到linux的文件系统里。

先ps aux |grep jetty 一下,找到jetty的pid,然后

lsof -u jettypid看一下当前用户的文件数是1286,

再查看一下当前用户级的可打开文件数: ulimit -a

默认是1024.

 

需要改大,更改 /etc/security/limits.conf,加入

soft nofile 65535

hard nofile 65535

 

 本文出自 “祝坤荣” 博客,请务必保留此出处

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章