600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C3P0连接池的断开自动重联功能

C3P0连接池的断开自动重联功能

时间:2020-07-05 15:55:33

相关推荐

C3P0连接池的断开自动重联功能

问题背景

Java后台日志发现Error updating database. Cause: com.mysql.jdbc.municationsException: Communications link failure的错误,查了下,发现是mysql连接超时断开,而连接池还以为链接正常时报的错误;

解决方案

1、延长空闲超时时间

set global wait_timeout=604800;

set global interactive_timeout=604800;

这两个参数分别都设置为604800秒即7天;

2、添加连接池对数据库连接的状态检测动作(有降低一定性能)

<bean id=”dataSource” class=”com.mchange.boPooledDataSource” destroy-method=”close”>

<property name=”driverClass” value=”${dataSourceforSe.driverClassName}” />

<property name=”jdbcUrl” value=”${dataSourceforSe.url}”/>

<property name=”user” value=”${dataSourceforSe.username}”/>

<property name=”password” value=”${dataSourceforSe.password}”/>

<property name=”minPoolSize” value=”2″/>

<property name=”maxPoolSize” value=”20″/>

<property name=”maxIdleTime” value=”1800″/>

<property name=”acquireIncrement” value=”2″/>

<property name=”maxStatements” value=”0″/>

<property name=”initialPoolSize” value=”3″/>

<property name=”idleConnectionTestPeriod” value=”240″/>

<property name=”acquireRetryAttempts” value=”10″/>

<property name=”breakAfterAcquireFailure” value=”false”/> <!– 网络故障恢复之后,pool能继续请求设为false –>

<property name=”testConnectionOnCheckout” value=”true”/>

</bean>

在原有配置上添加三个选项

<property name="breakAfterAcquireFailure" value="false"/><property name="idleConnectionTestPeriod" value="180"/><property name="acquireRetryAttempts" value="10"/>breakAfterAcquireFailure: falsetrue表示pool向数据库请求连接失败后标记整个pool为block并close,就算后端数据库恢复正常也不进行重连,客户端对pool的请求都拒绝掉。false表示不会标记pool为block,新的请求都会尝试去数据库请求connection。默认为false。因此,如果想让数据库和网络故障恢复之后,pool能继续请求正常资源必须把此项配置设为falseidleConnectionTestPeriod: 60C3P0会有一个Task检测pool内的连接是否正常,此参数就是Task运行的频率。默认值为0,表示不进行检测。acquireRetryAttempts: 10重试次数

查看原文

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。