我有一个不错的Spring Boot JPA Web应用程序。它部署在Amazon Beanstalk上,并使用Amazon RDS保留数据。但是,它不经常使用,因此在一段时间后由于以下异常而失败:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收到的最后一个数据包是79,870,633毫秒之前。 成功发送到服务器的最后一个数据包是79,870,634毫秒之前。大于服务器配置的“ wait_timeout”值。您应考虑在应用程序中使用连接之前使连接有效性到期和/或对其进行测试,或者增加服务器为客户端超时配置的值,或者使用Connector / J连接属性’autoReconnect = true’来避免此问题。
我不确定如何配置此设置,也无法在http://spring.io(虽然这是一个很好的网站)上找到有关此信息。有什么想法或指向信息的指针?
我认为引导正在DataSource为您配置。在这种情况下,并且由于您使用的是MySQL,因此您最多可以将以下内容添加application.properties到1.3中
DataSource
application.properties
spring.datasource.testOnBorrow=true spring.datasource.validationQuery=SELECT 1
如djxak在注释所指出的,用于四个连接池弹簧引导支撑1.4+定义了特定的名称空间:tomcat,hikari,dbcp,dbcp2(dbcp被弃用的1.5)。您需要检查使用的连接池,并检查是否支持该功能。上面的示例是针对tomcat的,因此您必须在1.4+中编写如下代码:
tomcat
hikari
dbcp
dbcp2
spring.datasource.tomcat.testOnBorrow=true spring.datasource.tomcat.validationQuery=SELECT 1
请注意,使用的autoReconnect是不建议:
autoReconnect
不建议使用此功能,因为当应用程序无法正确处理SQLExceptions时,它具有与会话状态和数据一致性相关的副作用,并且仅设计用于无法配置应用程序来处理由以下原因导致的SQLExceptions时使用失效和陈旧的连接正确。