복붙노트

[SPRING] tomcat7 - jdbc 데이터 소스 - 메모리 누수가 발생할 가능성이 큽니다.

SPRING

tomcat7 - jdbc 데이터 소스 - 메모리 누수가 발생할 가능성이 큽니다.

Tomcat이 종료되면 catalina.out 로그 파일에 다음 메시지가 표시됩니다. Tomcat 7.x 및 Tomcat JDBC 데이터 소스를 사용하고 있습니다.

Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 
SEVERE: The web application [/my_webapp] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 
Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 
SEVERE: The web application [/my_webapp] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.

첫 번째 주장은 DataSource가 강제로 등록이 해제되었으므로 괜찮습니다. 그러나 그것은 이상한 일입니다. 왜냐하면 나는 destroy-method를 다음과 같이 구성했기 때문입니다 :

<bean name="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="username" value="root"/>
    <property name="password" value="password"/>
</bean>  

왜 내가 두 번째를 얻는 지 잘 모르겠다. "MySQL Statement Cancellation Timer"에 관한 것.

어떤 도움을 주시면 감사하겠습니다.

편집 1 : @ Zelldon에서 제안한 수정을 시도하고 첫 번째 오류를 제거합니다. 그러나 MySQL Statement Cancellation Timer 관련 문제는 계속 발생합니다.

해결법

  1. ==============================

    1.SQL 커넥터 / 드라이버를 tomcat / lib에 넣고 전쟁에 넣지 마십시오. war를 배포 할 때마다 커넥터 / 드라이버가 만들어지기 때문에 가비지 컬렉터가 메모리 누수로 끝날 수없는 가끔씩 제거됩니다. 그래서 커넥터를 tomcat / lib 폴더로 옮겨보십시오.

    SQL 커넥터 / 드라이버를 tomcat / lib에 넣고 전쟁에 넣지 마십시오. war를 배포 할 때마다 커넥터 / 드라이버가 만들어지기 때문에 가비지 컬렉터가 메모리 누수로 끝날 수없는 가끔씩 제거됩니다. 그래서 커넥터를 tomcat / lib 폴더로 옮겨보십시오.

    다음 답변을 읽어보십시오.

    JDBC 드라이버를 TOMCAT_HOME / lib 폴더에 넣어야하는 이유는 무엇입니까?

    Tomcat을 MySQL과 연결하도록 구성하는 방법

  2. ==============================

    2.이 버그는 MySQL JDBC 커넥터의 http://bugs.mysql.com/bug.php?id=65909와 관련이 있습니다.

    이 버그는 MySQL JDBC 커넥터의 http://bugs.mysql.com/bug.php?id=65909와 관련이 있습니다.

    MySQL 팀이 문제를 해결할 때까지 기다리거나 MySQL과 잘 작동하는 Drizzle JDBC 커넥터를 사용하려고합니다 (URL 연결에서 매개 변수를 변경하기 만하면됩니다). 테스트에서이 종류가 없습니다. 버그.

  3. from https://stackoverflow.com/questions/15632153/tomcat7-jdbc-datasource-this-is-very-likely-to-create-a-memory-leak by cc-by-sa and MIT license