Web アプリケーションの可用性に大混乱を引き起こしている不可解な問題に直面しています。いくつかの背景 -
- サーバー - Apache+Tomcat7
- Web フレームワーク - JSP を使用した Struts2
サーバーのログオフを遅く確認すると、次の例外がたくさん発生しています-
26092219 [http-bio-8080-exec-695] ERROR org.apache.struts2.components.template.FreemarkerTemplateEngine - Could not load the FreeMarker template named 'hidden':
26092219 [http-bio-8080-exec-695] ERROR org.apache.struts2.components.template.FreemarkerTemplateEngine - Attempted: /template/simple/hidden.ftl
26092219 [http-bio-8080-exec-695] ERROR org.apache.struts2.components.template.FreemarkerTemplateEngine - The TemplateLoader provided by the FreeMarker Configuration was a: freemarker.cache.MultiTemplateLoader
Error reading included file template/simple/dynamic-attributes.ftl
The problematic instruction:
----------
==> include "/${parameters.templateDir}/simple/dynamic-attributes.ftl" [on line 44, column 1 in template/simple/a-close.ftl]
----------
Java backtrace for programmers:
----------
freemarker.template.TemplateException: Error reading included file template/simple/dynamic-attributes.ftl
freemarker.template.TemplateException: Error reading included file template/simple/dynamic-attributes.ftl
at freemarker.core.Include.accept(Include.java:167)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.Environment.process(Environment.java:189)
at freemarker.template.Template.process(Template.java:237)
at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:157)
at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559)
at org.apache.struts2.components.Anchor.end(Anchor.java:145)
at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)
at org.apache.jsp.jsp_005froot.ajax.synset.trackedCustomEntities_jsp._jspx_meth_gs_005fa_005f0(trackedCustomEntities_jsp.java:648)
at org.apache.jsp.jsp_005froot.ajax.synset.trackedCustomEntities_jsp._jspx_meth_gs_005fif_005f2(trackedCustomEntities_jsp.java:573)
at org.apache.jsp.jsp_005froot.ajax.synset.trackedCustomEntities_jsp._jspx_meth_gs_005fiterator_005f0(trackedCustomEntities_jsp.java:380)
at org.apache.jsp.jsp_005froot.ajax.synset.trackedCustomEntities_jsp._jspService(trackedCustomEntities_jsp.java:128)
...
これは発生し続け、その結果too many open files
、次のような例外が発生します。
java.io.FileNotFoundException: /opt/tomcat7/work/Catalina/localhost/_/loader/template/simple/form.ftl (Too many open files)
javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
nested exception is:
java.net.SocketException: Too many open files
...
主に、コードベースに freemarker ファイルが 1 つもないため、混乱しています。私の推測では、これは私がインポートしたいくつかのライブラリ内で発生しており、問題は大量のライブラリがあるため、それらのそれぞれを調べて、どのライブラリが動作しているかを把握することは現実的ではありません.
温度。私が行っているハックは、サーバーを再起動して「ulimit -n」サイズを2倍にすることです。しかし、これは単なる応急処置です。この問題の真相を突き止め、問題のあるライブラリを削除するか、不足しているライブラリを含めて解決したいと思います!?!?.
どんな助けでも感謝します。
更新 数時間にわたって収集したスタックトレースのダンプ - https://gist.github.com/4e22ffd19f0445521083うまくいけば、これはいくつかの指針を与えます。