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 перестает работать...
мои вопросы:
- как я могу избежать этой проблемы?
- должен ли я увеличить значение для такого параметра?
- увеличиваются ли какие-либо недостатки такая ценность? (Это всегда может быть значение, достигнутое моим приложением, если оно неактивно так долго.. :/ )
- нет ли другого решения с использованием Весна Загрузки (как опрос или что-то в этом роде)?
редактировать
здесь есть другие подобные/полезные вопросы:
- сбой канала связи Hibernate в приложении Java-сервлета на основе Hibernate В MySQL
- Spring теряет соединение с БД и не восстанавливается или не подключается
- предупредить SqlExceptionHelper: 143-ошибка SQL: 0, SQLState:08S01 - SqlExceptionHelper: 144 - сбой канала связи
- ошибка SQL: 0, sqlstate: 08S01 канал связи неудача
- https://serverfault.com/questions/89955/unable-to-connect-to-mysql-through-jdbc-connector-through-tomcat-or-externally
- решение "сбоя канала связи" с JDBC и MySQL
из приведенных выше ссылок я могу сделать вывод, что одним из решений является добавление 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