Spring Boot: сбой канала связи после нескольких часов бездействия с Hibernate, JDBC и MySQL [дубликат]

этот вопрос уже есть ответ здесь:

Я получаю эту ошибку, если мое приложение Spring Boot неактивно в течение нескольких часов (например, во время ночь):

2015-05-19 09:16:32.666  WARN 20582 --- [http-nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 08S01
2015-05-19 09:16:32.668 ERROR 20582 --- [http-nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper   : Communications link failure

The last packet successfully received from the server was 29.792.613 milliseconds ago.  The last packet sent successfully to the server was 6 milliseconds ago.

пытаясь решить эту проблему, я читал, что в MySQL есть параметр с именем wait_timeout по умолчанию установлено значение 8 часов (28800 секунд), и после этого все мои неактивные соединения закрыты, поэтому мое приложение Spring Boot перестает работать...

мои вопросы:

  • как я могу избежать этой проблемы?
  • должен ли я увеличить значение для такого параметра?
  • увеличиваются ли какие-либо недостатки такая ценность? (Это всегда может быть значение, достигнутое моим приложением, если оно неактивно так долго.. :/ )
  • нет ли другого решения с использованием Весна Загрузки (как опрос или что-то в этом роде)?

редактировать

здесь есть другие подобные/полезные вопросы:

из приведенных выше ссылок я могу сделать вывод, что одним из решений является добавление C3p0 в качестве дополнительной библиотеки и правильно настроить его, чтобы избежать ошибки канала связи..

это только решение у меня есть? Разве нет решения более "интегрированного" с Spring/Spring Boot (т. е. без добавления внешней библиотеки)?

1 ответов


Я решил проблему как описано здесь: http://blog.netgloo.com/2015/07/09/spring-boot-communications-link-failure-with-mysql-and-hibernate/, добавив эти конфигурации в :

spring.datasource.tomcat.testWhileIdle = true
spring.datasource.tomcat.timeBetweenEvictionRunsMillis = 60000
spring.datasource.tomcat.validationQuery = SELECT 1