tomcat7-JDBC datasource - jest to bardzo prawdopodobne, aby utworzyć wyciek pamięci

Otrzymuję następujące wiadomości w catalinie.out log file when tomcat is shutdown. Używam Tomcat 7.x i źródło danych 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.

Pierwszy twierdzi, że źródło danych zostało przymusowo niezarejestrowane, więc jest w porządku. Jest to jednak dziwne, ponieważ tak skonfigurowałem 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>  
Nie wiem, dlaczego dostaję drugą. Ten o "MySQL Statement Cancellation Timer".

Każda pomoc jest doceniana

Edycja 1: Próbowałem poprawka zasugerowana przez @Zelldon i usuwa pierwszy błąd. Jednak problem MySQL Statement Cancellation Timer nadal utrzymuje się

Author: arahant, 2013-03-26

2 answers

Spróbuj umieścić Łącznik/sterownik sql w tomcat / lib, a nie na wojnie. Ponieważ za każdym razem, gdy wdrażasz wojnę, złącze / sterownik zostanie utworzony, czasami garbage collector nie może ich usunąć, co zakończy się wyciekiem pamięci. Spróbuj więc przesunąć łącznik w folderze tomcat / lib.

Proszę przeczytać następujące odpowiedzi:

Dlaczego sterownik JDBC musi być umieszczony w folderze TOMCAT_HOME / lib?

Jak skonfigurować Tomcat do połączenia z MySQL

 30
Author: Zelldon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:08:39

To może być związane z tym błędem w MySQL JDBC connector: http://bugs.mysql.com/bug.php?id=65909 .

Możesz poczekać, aż zespół MySQL to naprawi, lub spróbować użyć Drizzle JDBC connector, który działa dobrze z MySQL (musisz tylko zmienić parametr w połączeniu url) i, w moich testach, nie ma tego rodzaju błędu.

 1
Author: Atropo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-26 08:21:32