我目前在我的应用程序中使用 Grails-2.2.4 ,最近我遇到了一个奇怪的问题。在我的生产大战中,应用程序在一段时间后经常丢失mysql连接,并且应用程序需要重新启动才能使连接再次工作,并且它可以再工作几天。 我正在使用tomcat jdbc-pool:7.0.47 ,这里是我的数据源属性
dataSource {
shard = false
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
dbCreate = "update" // one of 'create', 'create-drop','update'
properties {
initialSize=5
maxActive=50
minIdle=5
maxIdle=25
maxWait = 10000
maxAge = 10 * 60000
minEvictableIdleTimeMillis=1800000
timeBetweenEvictionRunsMillis=1800000
numTestsPerEvictionRun=3
validationQuery="SELECT 1"
validationInterval=15000
testWhileIdle=true
testOnBorrow=true
testOnReturn=true
jdbcInterceptors = "ConnectionState"
defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED
}
}
我在其他一些应用程序中具有相同的配置,并且它一直运行没有任何问题
答案 0 :(得分:0)
尝试在数据源URL中添加autoreconnect
参数:
dataSource {
url = "jdbc:mysql://localhost:3306/mydb?autoReconnect=true"
}
<强>更新强>
另一个原因可能是您的TCP防火墙在空闲一段时间后丢弃了连接。因此,您需要修改TCP超时设置。我已经提供了有关如何在Amazon EC2 http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-firewall-guidance.html上实现此目标的相关文档。你可以为你的提供者做,这应该是相同的。