2017-01-10 14 views
0

SpringブートアプリケーションがMySql wait_timeoutよりも長くアイドル状態になると、新しい接続が作成されず、アプリケーションが使用できなくなる。SpringブートでMysql接続が復旧しない

2017-01-10 21:51:42.613 ERROR 26973 --- [http-nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : No operations allowed after connection closed. 
2017-01-10 21:51:42.621 ERROR 26973 --- [http-nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: could not prepare statement; nested exception is org.hibernate.exception.JDBCConnectionException: could not prepare statement] with root cause 

java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost 

私は多くの類似の問題を調べ、ほとんどの推奨事項を追加しましたが、問題は引き続き発生します。私は以下の行を何十種類も組み合わせてみました。私のapplication.propertiesの関連部分は、私はまた、Tomcatの名前空間なしに上記の行を試してみた

spring.datasource.url = jdbc:mysql://localhost/mydb?autoReconnect=true&useSSL=false 

spring.datasource.log-validation-errors=true 
spring.datasource.tomcat.testOnBorrow=true 
spring.datasource.tomcat.timeBetweenEvictionRunsMillis=30000 
spring.datasource.tomcat.minEvictableIdleTimeMillis=60000 
spring.datasource.tomcat.validationInterval=60000 
spring.datasource.tomcat.validationQuery = SELECT 1 
spring.datasource.tomcat.testWhileIdle=true 
spring.datasource.tomcat.removeAbandoned=true 
spring.datasource.tomcat.removeAbandonedTimeout=55 

ですが、私はその.tomcatを信じています。は、Spring Boot 1.4以降では正しいです。また、スネークケースのプロパティ名(たとえば、test-while-idle)も試しました。

私は設定が無視されているようです。

私は春ブーツ

  • 使用しています1.4.3
  • にHibernate 5.2.6

答えて

0

は、最後にそれを考え出しました。私は、ConfigurationクラスでDatasourceを作成し、いくつかのプロパティを手動で設定していました。それはそれだけで、次の構成プロパティ

spring.datasource.tomcat.testWhileIdle = true 
spring.datasource.tomcat.timeBetweenEvictionRunsMillis = 30000 
spring.datasource.tomcat.validationQuery = SELECT 1 
で動作するように許可削除

関連する問題