MyBatis数据库连接出现Communications link failure现象的解决办法(dbcp2连接池)

背景

近期项目生产环境中老是出现”Communications link failure,The last packet successfully received from the server was ** millisecond ago.”
然后系统就无法读取数据库了。

解决办法

1、排查mysql数据库配置文件my.cnf中有无wait_timeout、interactive_timeout两个参数,要添加参数为

wait_timeout=864000
interactive_timeout=864000

864000为10天,具体的大小可根据系统情况自行调整。修改完后重启数据库服务生效。

2、检查web应用中的数据库连接池配置有无问题。我这边使用的是dbcp2,新增加了配置参数:


<property name="testWhileIdle" value="true"/>

<property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>

<property name="validationQuery" value="SELECT 1" />

<property name="testOnBorrow" value="false"/>

连接池配置全部代码(dbcp2):

<bean id="dataSource-base" class="org.apache.commons.dbcp2.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${driver}" />
    <property name="url" value="${url}" />
    <property name="username" value="${username}" />
    <property name="password" value="${password}" />
    
    <property name="initialSize" value="${initialSize}"/>
    
    <property name="maxTotal" value="${maxTotal}"/>
    
    <property name="maxIdle" value="${maxIdle}"/>
    
    <property name="minIdle" value="${minIdle}"/>
    
    <property name="maxWaitMillis" value="${maxWaitMillis}"/>
    
    <property name="testWhileIdle" value="true"/>
    
    <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
    
    <property name="validationQuery" value="SELECT 1" />
    
    <property name="testOnBorrow" value="false"/>
bean>

其中jdbc.properties:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/abc?useUnicode=true&characterEncoding=utf8&autoReconnect=true
username=username
password=password

#定义初始连接数  
initialSize=0
#定义最大连接数  
maxTotal=20
#定义最大空闲  
maxIdle=20
#定义最小空闲  
minIdle=1
#定义最长等待时间  
maxWaitMillis=60000
#空闲回收期运行周期(60秒)
timeBetweenEvictionRunsMillis=60000

配置参数修改后重新发布系统,上述问题解决了。

参考文章

http://blog.csdn.net/xuzhuang2008/article/details/8129204

http://blog.csdn.net/itbasketplayer/article/details/44198963

你可能感兴趣的:(Web服务,MySQL)