我有一个很好的小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上找到相关信息(虽然这是一个非常好的网站).有哪些想法或信息指针?
我使用JDBC连接到MySQL服务器(我认为没有连接池).在我的连接URL中autoReconnect=true
但我的联系仍然超时.我甚至检查过conn.isClosed()它的错误.但是当我尝试使用连接时,我得到以下异常.
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: Software caused connection abort: socket write error STACKTRACE: java.net.SocketException: Software caused connection abort: socket write error ...
我知道在Java 1.6中你可以conn.isValid(0)用来检查连接,但我使用的是Java 1.5
有没有办法确保它没有超时?或者我将不得不升级到Java 1.6?
如果我的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.
Run Code Online (Sandbox Code Playgroud)
试图解决这个问题我读到MySQL有一个名为wait_timeoutsetted 的参数,默认为8小时(28800秒),在此之后我的所有非活动连接都关闭了,所以我的Spring Boot应用程序停止工作......
我的问题是:
编辑
这里还有其他类似/有用的问题: