본문 바로가기

개발 일기

[웹호스팅] Seedgenerator thread leak 문제

 

23-Jun-2022 10:51:12.052 경고 [xxxxx.cafe24.com-startStop-5] 
org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [manager] appears to have started a thread named [SeedGenerator Thread] but has failed to stop it. 
This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:502)
 sun.security.provider.SeedGenerator$ThreadedSeedGenerator.run(SeedGenerator.java:334)
 java.lang.Thread.run(Thread.java:745)

 

요며칠 몇번 봤던 에러이다. 

 

Memory Leak이 발생하는 이유는 등록된 JDBC드라이버를 미등록 상태로 변경하던 중 실패가 되기 때문에 강제적으로 미등록 상태로 만드는게 필요해서라고 한다.

 

1. 우선 jdbc 드라이버를 tomcat/lib 폴더에 넣어준다.

JDBC 드라이버는 스스로 모든 웹 어플리케이션에서 DriverManager로 싱글톤으로 등록하는데 두 개 이상의 다른 웹 어플리케이션에서 동일한 jdbc 드라이버 등록이 있는 경우 발생하는 문제라고 한다. 

또한, 이는 웹 어플리케이션을 톰캣의 재시작없이 재배포할 때  메모리의 누수를 막아준다고 한다.

 

출처는 여기

 

Why must the JDBC driver be put in TOMCAT_HOME/lib folder?

I have a weird problem where two web apps with Oracle JDBC driver will conflict with each other. I have to put the JDBC driver JAR in the common folder TOMCAT_HOME/lib. What is the reason for this?

stackoverflow.com

 

2. DB 정보를 맞춰준다.

프로젝트의 application.yml에 있는 datasource의 url, username, password 등을 cafe24의 것으로 변경해준다.

 

 

3. 은 없습니다.

해결!