2013-03-26 3 views
20

Ich erhalte die folgenden Meldungen in catalina.out Log-Datei, wenn Tomcat heruntergefahren wird. Ich verwende Tomcat 7.x und die Tomcat JDBC-Datenquelle.tomcat7 - jdbc Datenquelle - Dies ist sehr wahrscheinlich, um ein Speicherleck zu erstellen

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. 

Die erste behauptet, dass die Datasource gewaltsam unregistrierte worden ist, so ist das in Ordnung. Jedoch ist es seltsam, weil ich die destroy-Methode, wie so konfiguriert haben:

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

nicht sicher, warum ich die zweite bekommen. Der eine über den "MySQL Statement Cancellation Timer".

Jede Hilfe

EDIT 1 geschätzt wird: habe ich versucht, das Update vorgeschlagen von @Zelldon und es wird der erste Fehler beseitigen. Allerdings bleibt das MySQL Statement Cancellation Timer Problem weiterhin

+0

Mögliche Duplikate von [Wie Speicherleck Probleme zu lösen?] (Http://stackoverflow.com/questions/10615118/how-to-solve-memory-leak-problems) – OhadR

+0

Siehe diesen Kommentar, um mehr über MySQL zu erfahren Abbruch Thread-Problem. https://stackoverflow.com/a/46733027/185565 – Whome

+0

https://Stackoverflow.com/a/47019335/3408531 – TiMr

Antwort

27

Versuchen Sie, die sql Connector/Driver in den Tomcat/lib und nicht in den Krieg zu setzen. Da jedes Mal, wenn Sie den War bereitstellen, der Connector/Treiber erstellt wird, kann der Garbage Collector sie manchmal entfernen, was zu einem Speicherleck führt. Versuchen Sie also, den Connector im tomcat/lib-Ordner zu verschieben.

Bitte lesen Sie die folgenden Antworten:

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

How to configure Tomcat to connect with MySQL

+0

Danke. Sehen Sie meine bearbeitete Frage – arahant

+0

verwenden Sie auch andere Bibliotheken? – Zelldon

+0

nein. Die DataSource wird von Tomcat 7 bereitgestellt. Der Treiber stammt von MySql Connector/J. Obendrein habe ich Spring JDBC, aber ich denke, das hat nichts mit diesem Problem zu tun. Ansonsten gibt es keine anderen Datenbank-bezogenen Bibliotheken. – arahant

1

Es zu diesem Fehler im Anschluss MySQL jdbc zusammenhängen könnte: http://bugs.mysql.com/bug.php?id=65909.

Sie können auf das MySQL-Team warten, um es zu beheben, oder Sie versuchen, die Drizzle JDBC connector zu verwenden, die gut mit MySQL funktioniert (Sie müssen nur den Parameter in der URL-Verbindung ändern) und in meinen Tests nicht diese Art von Fehler.

+0

Nieselregen Website ist down – redochka

Verwandte Themen