問題描述
Spring Boot 應用程序中的內部 tomcat 停止響應調用 (internal tomcat inside spring boot application stops responding to calls)
我們有一個帶有 tomcat 的 Spring Boot Web 應用程序。應用程序正確啟動並響應請求,但一段時間後,tomcat 停止響應請求,而 java 進程處於活動狀態。所有log4j相關的依賴都是通過以下pom配置添加的
org.springframework.boot spring‑boot‑starter‑log4j2
但我在控制台中看到以下錯誤,
線程“http‑nio‑8034‑Acceptor‑0”java中的異常.lang.NoClassDefFoundError:org.apache.logging.log4j.core.impl 中的 org/apache/logging/log4j/core/impl/ThrowableProxy。DirectJDKLog.error(DirectJDKLog.java:147) at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:481) at java.lang.Thread.run(Thread.java:748) : java.lang.ClassNotFoundException: org.apache.logging.log4j.core.impl.ThrowableProxy at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424)在 org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 30 更多
我監控了虛擬機的 CPU、內存統計數據,一切看起來都很好。無法弄清楚為什麼 tomcat 沒有響應。
481) 在 java.lang.Thread.run(Thread.java:748) 引起:java.lang.ClassNotFoundException: org.apache.logging.log4j.core.impl.ThrowableProxy at java.net.URLClassLoader.findClass(URLClassLoader. java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) 在 java.lang.ClassLoader.loadClass(ClassLoader.java :357) ... 30 多個我監控了 VM 的 CPU、內存統計數據,一切看起來都很好。無法弄清楚為什麼 tomcat 沒有響應。
481) 在 java.lang.Thread.run(Thread.java:748) 引起:java.lang.ClassNotFoundException: org.apache.logging.log4j.core.impl.ThrowableProxy at java.net.URLClassLoader.findClass(URLClassLoader. java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) 在 java.lang.ClassLoader.loadClass(ClassLoader.java :357) ... 30 多個我監控了 VM 的 CPU、內存統計數據,一切看起來都很好。無法弄清楚為什麼 tomcat 沒有響應。
lang.ClassLoader.loadClass(ClassLoader.java:424) at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 30更多我監控了VM的CPU,內存統計,一切看起來都很好。無法弄清楚為什麼 tomcat 沒有響應。
lang.ClassLoader.loadClass(ClassLoader.java:424) at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 30更多我監控了VM的CPU,內存統計,一切看起來都很好。無法弄清楚為什麼 tomcat 沒有響應。
參考解法
方法 1:
Found the cause for this issue. This a bug in spring related to how spring looks for static files.
The error in tomcat does not give us a clue but the same error occured in another VM but with some additional logs which said "too many open files" and that helped to find the cause.
how can i handle with /tmp/jar_cache#######.tmp?
(by karthik2146、karthik2146)