grails oracle连接超时
grails oracle connection timeout
我在 grails 中有以下数据源配置。
dataSource_staging_oracle {
dbCreate = "none"
pooled = true
url = "jdbc:oracle:thin:@//my-box-oracle.com:1521/DB1"
driverClassName = "oracle.jdbc.OracleDriver"
username = "USER_1"
password = "encryptedpassword"
passwordEncryptionCodec = PropertiesCodec
}
dataSource_prod_oracle {
dbCreate = "none"
pooled = true
autoReconnect = true
url = "jdbc:oracle:thin:@//my-oracle-prod-box.com:1521/DB2"
driverClassName = "oracle.jdbc.OracleDriver"
username = "user_2"
password = "encrypted_password"
passwordEncryptionCodec = PropertiesCodec
}
应用程序能够获取数据库连接并且工作正常。然而,经过 1-2 小时的处理后,我看到连接关闭异常。
ERROR util.JDBCExceptionReporter - Closed Connection
我认为这与数据源配置属性有关。哪些 grails 设置可以帮助我刷新连接?我已经将 autoReconnect
和 pooled
设置为 true
我使用 grails 2.3.3
数据源属性将通知数据库中间件服务器对数据库的期望。如果您的 Oracle 服务器不同意 Grails 想要使用的设置,有时会出现神秘的错误消息。
使用连接池告诉 Oracle 为应用程序保留一定数量的连接。如果应用程序需要 运行 1-2 小时并持续处理,我预计池中可能 运行 没有有效连接。对于一些背景,请查看下面包含的链接。
查看 Grails configuration docs 第 4.4 节,了解高级数据源配置选项。您是否定义了验证查询? (例如select 1 from dual;
)
查看此 AskTom post 以获得对 connection pooling 的清晰解释。
Previous Whosebug question 与 MySQL 但类似的错误。
以下配置帮助我解决了问题。
dataSource_staging {
dbCreate = "none"
pooled = true
autoReconnect = true
url = "jdbc:oracle:thin:@//my-box-oracle.com:1521/DB1"
driverClassName = "oracle.jdbc.OracleDriver"
username = "USER_1"
password = "encryptedpassword"
passwordEncryptionCodec = PropertiesCodec
properties {
validationQuery = "SELECT 1 FROM DUAL"
testOnBorrow = true
testWhileIdle = true
testOnReturn = false
timeBetweenEvictionRunsMillis = 5000
minEvictableIdleTimeMillis = 60000
maxAge = 10 * 60000
maxWait = 10000
maxIdle = 25
maxActive = 50
initialSize = 5
}
}
我在 grails 中有以下数据源配置。
dataSource_staging_oracle {
dbCreate = "none"
pooled = true
url = "jdbc:oracle:thin:@//my-box-oracle.com:1521/DB1"
driverClassName = "oracle.jdbc.OracleDriver"
username = "USER_1"
password = "encryptedpassword"
passwordEncryptionCodec = PropertiesCodec
}
dataSource_prod_oracle {
dbCreate = "none"
pooled = true
autoReconnect = true
url = "jdbc:oracle:thin:@//my-oracle-prod-box.com:1521/DB2"
driverClassName = "oracle.jdbc.OracleDriver"
username = "user_2"
password = "encrypted_password"
passwordEncryptionCodec = PropertiesCodec
}
应用程序能够获取数据库连接并且工作正常。然而,经过 1-2 小时的处理后,我看到连接关闭异常。
ERROR util.JDBCExceptionReporter - Closed Connection
我认为这与数据源配置属性有关。哪些 grails 设置可以帮助我刷新连接?我已经将 autoReconnect
和 pooled
设置为 true
我使用 grails 2.3.3
数据源属性将通知数据库中间件服务器对数据库的期望。如果您的 Oracle 服务器不同意 Grails 想要使用的设置,有时会出现神秘的错误消息。
使用连接池告诉 Oracle 为应用程序保留一定数量的连接。如果应用程序需要 运行 1-2 小时并持续处理,我预计池中可能 运行 没有有效连接。对于一些背景,请查看下面包含的链接。
查看 Grails configuration docs 第 4.4 节,了解高级数据源配置选项。您是否定义了验证查询? (例如select 1 from dual;
)
查看此 AskTom post 以获得对 connection pooling 的清晰解释。
Previous Whosebug question 与 MySQL 但类似的错误。
以下配置帮助我解决了问题。
dataSource_staging {
dbCreate = "none"
pooled = true
autoReconnect = true
url = "jdbc:oracle:thin:@//my-box-oracle.com:1521/DB1"
driverClassName = "oracle.jdbc.OracleDriver"
username = "USER_1"
password = "encryptedpassword"
passwordEncryptionCodec = PropertiesCodec
properties {
validationQuery = "SELECT 1 FROM DUAL"
testOnBorrow = true
testWhileIdle = true
testOnReturn = false
timeBetweenEvictionRunsMillis = 5000
minEvictableIdleTimeMillis = 60000
maxAge = 10 * 60000
maxWait = 10000
maxIdle = 25
maxActive = 50
initialSize = 5
}
}