use*_*497 4 spring-mvc c3p0 connection-timeout
我正在使用树脂服务器 + spring 框架和 c3p0 连接池。我已经使用以下属性文件配置了连接池。但不知何故,每 24 小时左右,我的网站就会面临连接超时错误,然后我必须重新启动我的树脂服务器才能使网站重新上线。请告诉我以下配置文件有什么问题以及我在这里遗漏了什么。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.databaseURL=jdbc:mysql://localhost/my_database1_url
jdbc.StockDatabaseURL=jdbc:mysql://localhost/my_database2_url
jdbc.username=my_username
jdbc.password=my_password
jdbc.acquireIncrement=10
jdbc.minPoolSize=20
jdbc.maxPoolSize=30
jdbc.maxStockPoolSize=30
jdbc.maxStatements=100
jdbc.numOfHelperThreads=6
jdbc.testConnectionOnCheckout=true
jdbc.testConnectionOnCheckin=true
jdbc.idleConnectionTestPeriod=30
jdbc.prefferedTestQuery=select curdate();
jdbc.maxIdleTime=7200
jdbc.maxIdleTimeExcessConnections=5
Run Code Online (Sandbox Code Playgroud)
所以,一堆东西。
unreturnedConnectionTimeout定义一段时间后,c3p0 应该假定连接已经泄漏,因此关闭它。设置debugUnreturnedConnectionStackTraces要求 c3p0 记录检出未正确检入的连接的堆栈跟踪。请参阅配置以调试和解决损坏的客户端应用程序。prefferedTestQuery应该是preferredTestQuery。numOfHelperThreads应该是numHelperThreads。以下根本不是 c3p0 配置名称。也许您正在内部将它们映射到 c3p0 配置,但您想验证这一点。以下是 not-c3p0-property-names:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.databaseURL=jdbc:mysql://localhost/my_database1_url
jdbc.StockDatabaseURL=jdbc:mysql://localhost/my_database2_url
jdbc.username=my_username
jdbc.maxStockPoolSize=30
Run Code Online (Sandbox Code Playgroud)
在标准的 c3p0.properties 形式中,您可能的意思是
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcURL=jdbc:mysql://localhost/my_database1_url
# no equivalent -- jdbc.StockDatabaseURL=jdbc:mysql://localhost/my_database2_url
c3p0.user=my_username
# no equivalent -- jdbc.maxStockPoolSize=30
Run Code Online (Sandbox Code Playgroud)
请参阅配置属性。同样,c3p0 对jdbc.-prefixed 属性一无所知,但也许您自己的库或中间件中的某些东西会选择这些。
注意:我喜欢看到@NiSay 检查连接泄漏的方式,因为我喜欢看到人们使用更高级的 c3p0 API。只要您不热更新数据源的配置,它就会起作用。但是你不需要那么麻烦,并且不能保证这种方法会在未来的版本中继续有效 c3p0 对 ConnectionCustomizer 生命周期不做任何承诺。ConnectionCustomizers 旨在是无状态的。使用 c3p0 的内置泄漏检查工具更容易、更安全,如上面的第一个要点所述。
| 归档时间: |
|
| 查看次数: |
5728 次 |
| 最近记录: |