2009-10-15 11 views
6

बस पिछले सप्ताह में मुझे जेबॉस (वी 4.2.2) वेब एप्लिकेशन तक पहुंचने में समस्याएं आई हैं। जब मैं होम पेज पर जाता हूं, तो मुझे java.lang.NullPointerException त्रुटि पृष्ठ मिलता है। जेबॉस लॉग आउटपुट को देखने के बाद, ऐसा लगता है कि बहुत सी फाइलें खुली हैं, तो मैं इन फ़ाइलों को बंद करने के बारे में कैसे जाउंगा?जेबॉस बहुत सारी फ़ाइलें ओपन त्रुटि

ERROR [[jsp]] Servlet.service() for servlet jsp threw exception 
    java.io.FileNotFoundException: /usr/local/jboss-4.2.2.GA/server/default/work/jboss.web/localhost/catissuecore/org/apache/jsp/pages/content/home/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.Compiler.generateJava(Compiler.java:152) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:306) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:316) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) 
    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:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:447) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292) 
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:423) 
    at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:270) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:619) 
सब से
ERROR [[localhost]] Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/pages/content/home/Error.jsp] 
    org.apache.jasper.JasperException: Unable to compile class for JSP 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:574) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:316) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336) 
    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:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:447) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292) 
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:423) 
    at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:270) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:619) 
    Caused by: java.io.FileNotFoundException: /usr/local/jboss-4.2.2.GA/server/default/work/jboss.web/localhost/catissuecore/org/apache/jsp/pages/content/home/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.Compiler.generateJava(Compiler.java:152) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:306) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566) 
    ... 21 more 

उत्तर

11

सबसे पहले आप क्या फ़ाइल (रों) निर्धारित करने के लिए खुला रहेगा चाहते हैं: यहाँ JBoss लॉग से उत्पादन होता है। मैं अपने सर्वर लिनक्स चलाता है यह सोचते हैं रहा हूँ, इसलिए एक बार आप जानते हैं JBoss'es पीआईडी ​​

ps ax | grep something-that-makes-your-jboss-process-unique 

आप

ls -l /proc/jbosspid/fd 

फ़ाइलें जो उस पल में खुले हैं का एक अच्छा सूची प्राप्त करने के लिए कर सकते हैं।

  1. तुम सिर्फ फ़ाइलों की संख्या अप करने के लिए आवश्यकता हो सकती है सर्वर (ulimit साथ एक सा खोल सकते हैं भी प्रणाली में देखो:

    आप इसके बाद क्या करने जा रहे हैं आप यहाँ क्या देखते हैं पर थोड़ा निर्भर करता है आपके सर्वर पर सीमा)

  2. हो सकता है आप फ़ाइलों की एक संख्या का पता अपने आवेदन
  3. बंद करने के लिए ....

लेकिन इन फ़ाइलों को बंद करने के लिए/खुली फ़ाइलों आप करना होगा से छुटकारा पाने के भूल गया जेबीओएस को पुनरारंभ करें उदाहरण

+4

+1 उलिमिट बढ़ने से पहले लीक की जांच के लिए +1। –

5

मान लें कि आप लिनक्स (या अन्य * एनआईक्स) पर चल रहे हैं तो 1024 प्रति प्रक्रिया की फ़ाइल डिस्क्रिप्टर सीमा है। यूनिक्स में सबकुछ एक फ़ाइल है - जिसमें सॉकेट, डिवाइस आदि शामिल हैं। इस पर एक नज़र डालने के लिए lsof कमांड (केवल रूट के रूप में) चलाने के लिए है - यह आपको सभी खुली फ़ाइल डिस्क्रिप्टर दिखाएगा।

इसे ठीक करने के लिए, फ़ाइल को /etc/security/limits.conf में संपादित करें और निम्न पंक्तियां जोड़ें और अपने jboss को पुनरारंभ करें।

jboss   soft nofile   16384 
jboss   hard nofile   16384 

(यह मानते हुए अपने jboss "jboss" उपयोगकर्ता द्वारा चलाया जाता है)

3

मैं इस समस्या को भी (linux पर) था। क्या मैंने किया:

  1. चेक सीमा: ulimit उत्पादन में
  2. जांच 2 लाइनों -एक:
 
    open files      (-n) 1024 
    max user processes    (-u) 1024 
  1. दोनों पैरामीटर (उदाहरण के लिए अपने .bash_profile में) सेट
 
    ulimit -n 100000 
    ulimit -u 100000 

मेरे मामले में मुझे समस्या को हल करने के लिए दोनों पैरामीटर बदलना पड़ा।

संबंधित मुद्दे