2017-06-02 7 views
0

geschlossen Wir migrieren unser System von MS SQL Server zu MySQL und wir verwenden Spring Boot für unsere Anwendung. Unsere Anwendung mit Blick auf "Verbindung wurde bereits geschlossen" SQLException für einige Tage und wir verwenden, um unsere Anwendung neu starten und es begann gut, aber hier ist der Haken nach einigen Stunden beginnt es die gleiche Verbindung geschlossen SQLException.Die Verbindung wurde bereits für Spring Boot und MySQL

Hier sind die configs Eigenschaften xfor Verbindung:

database.jndiName=jdbc/SmartData 
database.driverClassName=com.mysql.jdbc.Driver 
database.url=XXXXXX 
database.username=XXXXXXXXXXX 
database.password=XXXXXX 
database.factory=org.apache.tomcat.jdbc.pool.DataSourceFactory 
database.initialSize=2 
database.logAbandoned=false 
database.maxIdle=4 
database.maxWaitMillis=29998 
database.minEvictableIdleTimeMillis=3000 
database.minIdle=2 
database.removeAbandonedTimeout=6 
database.removeAbandoned=true 
database.testOnBorrow=true 
database.testOnReturn=false 
database.testWhileIdle=false 
database.timeBetweenEvictionRunsMillis=3000 
database.validationQuery=SELECT 2+2 
database.maxActive=10 
database.validationInterval=3000 
+0

, wie Sie Ihre Verbindung erhalten Sie ?? vielleicht hast du es als statisch definiert und deshalb bekommst du diesen Fehler. –

+0

Da Sie eine gepoolte Datenquelle für Verbindungen verwenden, erstellt Ihre Anwendung möglicherweise zu viele Verbindungen als das zulässige Limit. Nach Erreichen dieses Grenzwerts werden möglicherweise keine weiteren Verbindungen zugelassen. –

+0

fügen Sie diese in Ihrer Konfigurations jdbcInterceptors = "ResetAbandonedTimer" –

Antwort

0

paar Vorschläge, die Sie von ähnlichen Beiträgen hier auf SO folgen können, zum Beispiel der verifizierte Validierungsabfrage zu sein SELECT 1 scheint, die nicht in Ihrem Fall verwendet wird.

-this Frage Siehe auf SO, was die Verwendung von Validation-Abfragen für verschiedene DBs zeigt.

database.validationQuery=SELECT 1 

Ein weiterer Vorschlag, die für Sie arbeiten kann, ist die connectionTimeut Parameter, der auf einen höheren Wert gesetzt werden kann, oder auch ein kleinerer Wert wird die Sitzung erzwingen.

connectionTimeout="300000" 

Hoffe, diese Vorschläge helfen!

0

Versuchen Sie unter Eigenschaften in Ihrer application.properties oder Konfigurationsdatei, falls externe Konfiguration hinzuzufügen.
database.test-on-borrow = true
database.validation-query = SELECT 1

Verwandte Themen