Spring Boot 應用程序中的內部 tomcat 停止響應調用 (internal tomcat inside spring boot application stops responding to calls)


問題描述

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 karthik2146karthik2146)

參考文件

  1. internal tomcat inside spring boot application stops responding to calls (CC BY‑SA 2.5/3.0/4.0)

#log4j2 #tomcat #spring-boot






相關問題

Làm cách nào để thêm phần phụ Log4J2 vào thời gian chạy theo chương trình? (How to add Log4J2 appenders at runtime programmatically?)

使用 Spring 和 Log4j2 的 Classloader-Leak (Classloader-Leak with Spring and Log4j2)

log4j2 RolllingFileAppender filePattern 創建日期錯誤 (log4j2 RolllingFileAppender filePattern create a wrong date)

將時間戳添加到日誌文件名時出錯 (log4j2) (Error adding timestamp to log file name (log4j2))

log4j2 - 以編程方式更改 RollingFileAppender 的最大文件大小 (log4j2 - programmatically change max file size of RollingFileAppender)

log4j 沒有登錄到文件或控制台 (log4j is not logging into file or console)

Log4j2 未在 Linux 中使用 Spring Boot 創建日誌文件 (Log4j2 not creating log file with Spring Boot in Linux)

application.properties 中的外部 log4j2.xml 文件路徑 (External log4j2.xml file path in application.properties)

使用 Spring 的依賴於配置文件的 log4j2 配置 (Profile-dependent log4j2 configuration with Spring)

從 log4j2.xml 訪問環境變量 (Accessing environment variable from log4j2.xml)

Spring Boot 應用程序中的內部 tomcat 停止響應調用 (internal tomcat inside spring boot application stops responding to calls)

如何在 mule 應用程序中實現 log4j2 (2.14.0) 'JSON 模板佈局'? (How can I implement log4j2 (2.14.0) 'JSON Template Layout' in a mule application?)







留言討論