欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI
欢迎使用普元文档库
【问题描述】platform7.6、7.6在user-config中配置的maxIdleTime不生效。
【原因】eos766以后才支持的maxIdleTime,以前的版本都不支持,用的是默认值0,自己写在配置文件参数值是无效的
【解答】连接池不释放解决方法.txt
在C3P0-0.9.0.jar包中放入c3p0.properties文件,放在根目录。c3p0.properties文件内容如下:
#每180秒检查所有连接池中的空闲连接。Default: 0
c3p0.idleConnectionTestPeriod=60
#最大空闲时间,300秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0
c3p0.maxIdleTime=300
#释放连接到连接池是否检查连接可用性
c3p0.testConnectionOnCheckin=true
#测试所有连接有效性的sql,可以加速测试过程
c3p0.preferredTestQuery=select 1
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
c3p0官网文档对有效检测连接有效性,要通过idleConnectionTestPeriod和testConnectionOnCheckin=true进行组合使用,效果更好。另外设置preferredTestQuery后,检测连接使用sql,而不加这个,使用元数据查表,速度较慢,使用这个可以加快测试连接速度。 governor数据源配置的测试SQL调试中为生效,从代码看好像没加到C3P0参数中,这可能是个bug。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
后续跟踪:
--------------------------------------------------------------------
打开C3P0的日志方式:
修改apps_config/default/config/log4j-3rd.xml,修改下面的:
<logger additivity="false" name="com.mchange">
<level value="DEBUG"/>
<appender-ref ref="ROLLING_FILE"/>
</logger>