MySQL连接超时

时间:2010-04-07 17:34:50

标签: java mysql tomcat

我正在apache tomcat服务器上运行程序,该程序应该是永久性的,但每天早上(客户端部分在晚上无法访问)我收到MySQL服务器关闭的错误消息(在apache tomcat控制台中)。那有什么方法可以防止这种情况发生吗? 提前谢谢!

3 个答案:

答案 0 :(得分:10)

是的,我遇到了同样的问题。尝试将validationQuery添加到DataSource。

以下是我如何定义我的:

<Resource auth="Container"
          type="javax.sql.DataSource"
          name="jdbc/gporder"
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost/mydb"
          maxActive="10"
          maxIdle="5"
          validationQuery="SELECT 1"
          testOnBorrow="true"
          testWhileIdle="true"
          timeBetweenEvictionRunsMillis="10000"
          minEvictableIdleTimeMillis="60000"
          username="..." password="..."/>

答案 1 :(得分:9)

mysql服务器在一段时间后超时连接,默认情况下为28800秒,这可能是你要达到的超时时间。

您可以通过将autoreconnect=true参数添加到jdbc网址来指示mysql驱动程序在连接丢失的情况下重新连接,例如: jdbc:mysql://localhost/mydb?autoreconnect=true

答案 2 :(得分:1)

我认为您直接在网络应用代码中打开了连接。 您可以尝试使用超时来引入connection pool,应该重新建立连接。

如果这没有帮助,请询问网络管理员他是否有状态过滤器检测超时(当您的客户端空闲时)并关闭连接。

如果您正在使用数据库池,例如c3p0或dbcp,请查看其文档,应该有一些设置来配置空闲超时或定期检查连接(这将保持连接打开,而不是暂停它服务器端)